美文网首页
ios 开发若干技巧

ios 开发若干技巧

作者: wintersal | 来源:发表于2016-03-26 18:44 被阅读34次

    1.定义函数时,希望传入的参数不为nil,或者为nil时会有警告显示:

    如下:

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

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

    p.s. index从1开始,不是0,且只对对象生效。

    该技巧同样来自,sunnyxx大神的微信,逗比狗~

    2.定义函数时,希望子类override该方法时候,必须调用super,否则编译器直接报错。

    @interface OldSix:NSObject

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

    该技巧同样来自,sunnyxx大神的微信,逗比狗~

    wait~~~~~

    /*检查子类在重写该方法时有没有调用自己(父类)的实现

    *对于一些可以被继承的类,需要子类在重某一调用父类的实现以保证正确的行为,通过在头文件方法的声明末尾添加`NS_REQUIRES_SUPER`

    *可以让编译器检查子类方法有调用父类的实现。具体使用方法如下:

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

    */

    但是根据我的实际测试,发现sunnyxx大神仙的方法,没有任何显示效果,不知道是不是我打开的方式不对还是怎么,

    总之,NS_REQUIRES_SUPER的方法亲测可用。

    3.误删系统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.定位方法的调用者

    相关文章

      网友评论

          本文标题:ios 开发若干技巧

          本文链接:https://www.haomeiwen.com/subject/clbdlttx.html