iOS小技巧 (持續(xù)更新)

1.定義函數(shù)時,希望傳入的參數(shù)不為nil,或者為nil時會有警告顯示:

如下:

- (instanceype)initWithFoo:(NSString *)foo bar:(NSString *)bar sark:(NSString *)sark

__atttribute__((nonnull(1, 2)));

p.s. index從1開始,不是0,且只對對象生效。

該技巧同樣來自,sunnyxx大神的微信,逗比狗~


2.定義函數(shù)時,希望子類override該方法時候,必須調(diào)用super,否則編譯器直接報錯。

@interface OldSix:NSObject

- (void)fooWithNothing __attribute__((objc_requires_super));

該技巧同樣來自,sunnyxx大神的微信,逗比狗~

wait~~~~~

/*檢查子類在重寫該方法時有沒有調(diào)用自己(父類)的實現(xiàn)

*對于一些可以被繼承的類,需要子類在重某一調(diào)用父類的實現(xiàn)以保證正確的行為,通過在頭文件方法的聲明末尾添加`NS_REQUIRES_SUPER`

*可以讓編譯器檢查子類方法有調(diào)用父類的實現(xiàn)。具體使用方法如下:

* - (void)viewWillAppear:(BOOL)animated NS_REQUIRES_SUPER;

*/

但是根據(jù)我的實際測試,發(fā)現(xiàn)sunnyxx大神仙的方法,沒有任何顯示效果,不知道是不是我打開的方式不對還是怎么,

總之,NS_REQUIRES_SUPER的方法親測可用。


3.誤刪系統(tǒng)sdk頭文件的解決辦法

在終端中輸入:

$ cd ~/Library/Developer/Xcode/DerivedData/ModuleCache/

$ rm -rf *


4.ARC下打印retainCount?

extern uintptr_t _objc_rootRetainCount(id obj);

id test = [NSString new];

NSLog(@"retain count %lu",_objc_rootRetainCount(test));

5.工程報錯下,仍然可以編譯成功

6.定位方法的調(diào)用者

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • 轉至元數(shù)據(jù)結尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,776評論 0 9
  • 前言 通過閱讀別人的優(yōu)秀源碼,你會發(fā)現(xiàn)別人的開源API設計中,有一些宏你是經(jīng)常忽略的,或者你不知道的。通過這些宏,...
    gitKong閱讀 5,200評論 5 41
  • 好久不畫,一擼,丑哭自己,果然和當年一樣丑。(ー_ー)!! 我是不是不適合畫畫,沒耐心啊。命中缺奮斗。。。 想好好...
    閑九月閱讀 268評論 0 0
  • 讀書困倦,回首寒光,念今夕無駐,時光難繼,佳人長隔。因作《燕歸梁》以記之。詞云: 獨臥寒窗桂未香。怕雪風飄涼。玉人...
    冰眉鐵面閱讀 410評論 0 3
  • 我第一次見到他,是高中開學的時候,16、7的年紀,情竇初開,就像電視劇里演的那樣,他自帶光芒,讓人挪不開眼睛。在那...
    會哭的餅干閱讀 142評論 0 0