pragma警告处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
使用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 @   古龙•历山大亚  阅读(170)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示