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開發知識總結 下篇的相關內容,最後希望本文能對你有所協助!