IOS 小技巧積累(持續更新)

來源:互聯網
上載者:User

1. 使用@property和@synthesize聲明一個成員變數,給其賦值是時要在前面加上"self.",以便調用成員變數的setmember方法。 

 
   直接調用成員變數並且給其賦值:member=[NSString stringWithFormat:@””];將不執行setmember 方法。

 
   使用self調用成員變數並且給其賦值:self.member=[NSString stringWithFormat:@””];將執行setmember方法。


2.延時函數: [NSThread sleepForTimeInterval:3];

     [self performSelector:@selector(machineBallAction) withObject:nil afterDelay:0];


3.實現隨機數:srandom(time(NULL));


4. #pragma mark -
 
    #pragma mark Initialization
 
   它們告訴Xcode編譯器,要在編輯器窗格頂部的方法和函數快顯功能表中將代碼分隔開;
注意
 
   #pragma mark – 的“-”後面不能有空格。
 
   如果你的標誌沒有出現在快顯功能表中,比如沒有分隔線出現,請在Xcode菜單 “Preferences..”中的 “Code Sense”選項取消選中”Sort listalphabetically”即可。


5.
 我們通過發送訊息給對象出發特定動作;對象發送某些變化的時候通過回呼函數(callback)通知我們。對象在特定事件發生的時候,就會調用對應的回呼函數,觸發商務邏輯。
     回呼函數通過所謂的代理(Delegation)來實現.

     delegate使用方法:

     @property (assign) <id>xxxDelegate delegate;

     正確的使用方法是使用assign屬性而不是retain。

     之所以對於delegate這類對象使用assign而不是用retain是為了防止迴圈retain(retain loop)。
     具體原因請移至:http://www.cnblogs.com/kimimaro/archive/2011/09/05/2167576.html


6. 編程習慣:定義Bool類型值時,@property(nonatomic,getter=isSoundOn) BOOL soundOn;


7.手動建立記憶體自動釋放池:

       NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc]init];

       // TODO

       // 向對象發送一條autorelese訊息時,就將該對象加入到自己手動建立的記憶體釋放池中。在此方法結束時調用[pool release],將釋放添加到該記憶體池的所有對象.

       [pool release];

       // 如若在自動釋放池pool 調用release方法之後,某對象的retainCount不為0,該對象將繼續保持可用。

8.任何基礎資料型別 (Elementary Data Type)(包括char資料類型),可以通過使用NSNumber類根據這些資料類型來建立對象。

       

    NSNumber *myNumber, *floatNubmer;        // long value    myNumber = [NSNumber numberWithLong:0xabcdef];    NSLog(@"%lx",[myNumber longValue]);          // 輸出:abcdef        // char value    myNumber = [NSNumber numberWithChar:'X'];    NSLog(@"%c", [myNumber charValue]);          // 輸出:X        // float value    floatNubmer = [NSNumber numberWithFloat:100.00];    NSLog(@"%g",[floatNubmer floatValue]);       // 輸出:100

9. 當把某一個對象以AddObject或者初始化的形式加入到Array,Dictionary中時,該對象retainCount將+1。

     當把某一個對象以remover的形式從Array,Dictionary移除時,該對象retainCount將-1。

     當使用copy 和mutableCopy 產生數組副本時,數組中每個元素的保持計數將+1。

10. 異常:exc_bad_access.

       引用對象已經釋放,即“魔鬼引用”。與VS中的“未將引用的對象應用到對象的執行個體”類似。

11. 更新UITableView資料問題:

        採用Sqlite3輕量級資料庫來儲存資料,通過調試發現,資料庫中資料已更新,但UITableView並沒有更新。

        解決方案:performSelectorOnMainThread:@selector(reloaddata) withObject:nil waitUntilDone:YES

                 但datasource並沒有資料,需要重新載入資料。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.