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_;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
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_;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
Atomic版本加了一个锁保证线程安全的,atomic保证userName方法获得的不是一个释放过的值。
3、使用归档程序复制对象(深复制)
NSMutableArray *dataArray = [NSMutableArray arrayWithObjects:[NSMutableString stringWithString: @"one"], ....];
NSMutableArray *dataArray2;
NSData data = [NSKeyedArchiver archivedDataWithRootObject:dataArray];
dataArray2 = [NSKeyedUnarchiver unarchiveObjectWithData: data];
- 1.
- 2.
- 3.
- 4.
- 5.
4、在iphone开发中,设置navigationController中返回按钮的标题,默认为前一个视图中标题的title,
如果设置,在前一个视图中写下:
UIBarButtonItem *temporaryBarButtonItem=[[UIBarButtonItem alloc] init];
temporaryBarButtonItem.title=@"Back";
self.navigationItem.backBarButtonItem = temporaryBarButtonItem;
[temporaryBarButtonItem release];
- 1.
- 2.
- 3.
- 4.
5、在table view 中加入手势或者事件触摸机制,需要实现方法
-(BOOL)canBecomeFirstResponder {
return YES;
}
- 1.
- 2.
- 3.
应该如下判断用户触摸的是哪一个cell
CGPoint pinchLocation = [pinchRecognizer locationInView:self.tableView];
NSIndexPath *newPinchedIndexPath = [self.tableView indexPathForRowAtPoint:pinchLocation];
- 1.
- 2.
- 3.
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开发感兴趣的话,请参考