您的位置:首页 > 移动开发 > IOS开发

编译器 —— 移除警告

2016-05-24 11:17 465 查看
有的时候不想让编译器提出警告,就需要在写代码时对代码想操作的代码块添加一部分预处理指令。

指令说明,其基本形式都是被以下方式包裹,只需要在对应的位置填写正确的说明信息即可

#pragma clang diagnostic push
#pragma clang diagnostic ignored "说明信息"
// code
#pragma clang diagnostic pop


1 .消除未知方法可能导致的内存泄漏

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"

[self performSelector:sel withObject:result];

#pragma clang diagnostic pop


2 .va_start规定要从最后一个定参数开始,寻如果一定要不符合规定写便会报错:‘second parameter of ‘va_start’ not last named argumet’ 下面为消除此警告

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wvarargs"

va_start(rgbs, num_args);

#pragma clang diagnostic pop


3 . 方法不建议使用的警告移除

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

#pragma clang diagnostic pop


4 . 未使用参数警告移除

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-variable"

int number;

#pragma clang diagnostic pop


5 . 循环引用警告

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-retain-cycles"

self.myBlock = ^(){
NSLog(@"There will be a warning");
[self description];
};

#pragma clang diagnostic pop


拓展:

#pramark

编译器特性

Which Clang Warning Is Generating This Message?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息