iPhone开发知识总结 上篇是本文要介绍的内容,主要讲述的是iphone开发应用中Atomic 和 nonatomic 属性的理解,来看详细内容。
1、关于不同分辨率的屏幕显示问题
iphone 3 和 4分辨率各不相同。加载图像的时候只需要指定基本的文件名,例如:pic.png根据不同分辨率,如果在iphone 4 上会自动加载pic@2x.png(如果存在)。
2、关于Atomic 和 nonatomic 属性的理解
atomic的访问控制器只用在没有垃圾回收的环境中。
使用atiomic能保证线程安全的,保证一个属性的get/set在一个线程中必须完成之后才能有其他的线程访问它。
- //@property(nonatomic, retain) UITextField *userName;
- //Generates roughly
- - (UITextField *) userName {
- return userName;
- }
- - (void) setUserName:(UITextField *)userName_ {
- [userName_ retain];
- [userName release];
- userName = userName_;
- }
Now, the atomic variant is a bit more complicates:
- //@property(retain) UITextField *userName;
- //Generates roughly
- - (UITextField *) userName {
- UITextField *retval = nil;
- @synchronized(self) {
- retval = [[userName retain] autorelease];
- }
- return retval;
- }
- - (void) setUserName:(UITextField *)userName_ {
- @synchronized(self) {
- [userName_ retain];
- [userName release];
- userName = userName_;
- }
Atomic版本加了一个锁保证线程安全的,atomic保证userName方法获得的不是一个释放过的值。
3、使用归档程序复制对象(深复制)
- NSMutableArray *dataArray = [NSMutableArray arrayWithObjects:[NSMutableString stringWithString: @"one"], ....];
- NSMutableArray *dataArray2;
- NSData data = [NSKeyedArchiver archivedDataWithRootObject:dataArray];
- dataArray2 = [NSKeyedUnarchiver unarchiveObjectWithData: data];
4、在iphone开发中,设置navigationController中返回按钮的标题,默认为前一个视图中标题的title,
如果设置,在前一个视图中写下:
- UIBarButtonItem *temporaryBarButtonItem=[[UIBarButtonItem alloc] init];
- temporaryBarButtonItem.title=@"Back";
- self.navigationItem.backBarButtonItem = temporaryBarButtonItem;
- [temporaryBarButtonItem release];
5、在table view 中加入手势或者事件触摸机制,需要实现方法
- -(BOOL)canBecomeFirstResponder {
- return YES;
- }
应该如下判断用户触摸的是哪一个cell
- CGPoint pinchLocation = [pinchRecognizer locationInView:self.tableView];
- NSIndexPath *newPinchedIndexPath = [self.tableView indexPathForRowAtPoint:pinchLocation];
6、- (void)dismissModalViewControllerAnimated:(BOOL)animated
UIViewController的这个方法很有意思,一般parent view controller都有责任调用此方法来消除其通过presentModalViewController:animated: 方法展现的modal view controller。但是如果你在modal view controller中调用此方法,modal view controller会自动的把此消息转发给parent view controller。
小结:iPhone开发知识总结 上篇的内容介绍完了,如果你对iPhone开发知识总结 下篇的相关内容,***希望本文能对你有所帮助!
iphone开发感兴趣的话,请参考