pragma警告处理

使用pragma消除警告 (绝不可强行消除,因为有可能是个运行时错误)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "命令字符串"
    代码块
#pragma clang diagnostic pop

1. "-Warc-performSelector-leaks" performselector可能造成内存泄漏
    SEL sel = @selector(gl_getImage:);
    [self performSelector:sel withObject:nil];
    以上警告也可使用消除
    IMP imp = [app methodForSelector:sel];
    void (*func)(id , SEL ,NSInteger) = (void *)imp;
    func(app,selector,0);

2. "-Wreceiver-is-weak" 调用者接收者是weak属性

3. "-Wunused-variable" 变量未使用
    或者 __unused int m = 2; //Unused variable 'm'

4. "-Wdeprecated-declarations" 方法弃用
    [UIAlertView alertView........]

5. "-Warc-retain-cycles" 循环引用
    while(true){}

6. "-Wincompatible-pointer-types" 指针不兼容的

7. "-Wundeclared-selector" 方法在本类中未申明
   eg. SEL sel = @selector(gl_getImage)
   不过以上方法导致的警告也可使用runtime机制消除
       SEL sel = sel_registerName("gl_getImage:")
       SEL sel = NSSelectorFromString(@"gl_getImage:");
8. "-Wunreachable-code" 代码将永不被执行
    NSLog(@"m");
    return;
    NSLog(@"n"); //Code will never be executed


如果想将项目中所有某类型的警告都消除
11. 配置文件 buildSettings->Other Warning Flags
    加入配置字符
    11.1 code will never be executed
        -Wno-unreachable-code   全局禁用警告
        -Wunreachable-code      全局启用警告
    11.2 Unused Entity Issue / unused function 'xxxxx'
        -Wno-unused-function    全局禁用
        -Wunused-function       全局启用
    11.3 ......

 

posted @ 2019-04-25 17:06  古龙•历山大亚  阅读(165)  评论(0编辑  收藏  举报