iOS编程 标注clang忽略编译器警告

在iOS开发过程中, 我们可能会碰到一些系统方法弃用, weak、循环引用、不能执行之类的警告,运用clang标注可以帮助你轻松解决。

// 插入需要忽略的相关代码 ⚠️

#pragma clang diagnostic push

#pragma clang diagnostic ignored "-Wundeclared-selector"

//插入需要忽略的相关代码(test方法在本类中不存在,ignored后加入"-Wundeclared-selector"编译器便忽略了此警告。)

[one performSelector:@selector(test) withObject:nil afterDelay:2.0];

#pragma clang diagnostic pop

//方法弃用告警 ⚠️

#pragmaclang diagnostic push

#pragmaclang diagnostic ignored "-Wdeprecated-declarations"

UIAlertView *alertViewTmp = [[UIAlertView alloc]initWithTitle:@""message:@""delegate:nil cancelButtonTitle:@""otherButtonTitles:@"", nil];

[alertViewTmp show];

#pragmaclang diagnostic pop

// 不兼容指针类型 ⚠️

#pragmaclang diagnostic push

#pragmaclang diagnostic ignored "-Wincompatible-pointer-types"

//

#pragmaclang diagnostic pop

//循环引用 ⚠️

#pragma clang diagnostic push

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

// self.completionBlock = ^ {//...// };

#pragma clang diagnostic pop

// 未使用变量 ⚠️

#pragmaclang diagnostic push

#pragmaclang diagnostic ignored "-Wunused-variable"

// inta;

#pragmaclang diagnostic pop

// 未使用default ⚠️

#pragmaclang diagnostic push

#pragmaclang diagnostic ignored "-Wcovered-switch-default"

// switch (style) {

// case UITableViewCellStyleDefault:

// case UITableViewCellStyleValue1:

// case UITableViewCellStyleValue2:

// case UITableViewCellStyleSubtitle:

// // ...

// default:

// return;

// }

#pragmaclang diagnostic pop

大家可以搜索需要忽略的警告编号,替换-Wundeclared-selector。(以下部分仅供参考)

-Wformat    invalid position specified for %select{field width|field precision}0

-Wformat    cannot mix positional and non-positional arguments in format string

-Wformat    values of type '%0' should not be used as format arguments add an explicit cast to %1 instead

-Wformat    format specifies type %0 but the argument has type %1

-Wformat    zero field width in scanf format string is unused

-Wformat    no closing ']' for '%%[' in scanf format string

-Wformat    format string should not be a wide string

-Wformat    format string contains '\\0' within the string body

-Wformat    '%select{*|.*}0' specified field %select{width|precision}0 is missing a matching 'int' argument

-Wformat    field %select{width|precision}0 should have type %1, but argument has type %2

-Wformat    %select{field width|precision}0 used with '%1' conversion specifier, resulting in undefined behavior

-Wformat    format string missing

-Wformat    incomplete format specifier-Wformat    flag '%0' results in undefined behavior with '%1' conversion specifier

-Wformat    flag '%0' is ignored when flag '%1' is present-Wformat    more '%%' conversions than data arguments

-Wformat    length modifier '%0' results in undefined behavior or no effect with '%1' conversion specifier

-Wformat-extra-args    data argument not used by format string

-Wformat-invalid-specifier    invalid conversion specifier '%0'

-Wformat-nonliteral    format string is not a string literal

-Wformat-security    format string is not a string literal (potentially insecure)

-Wformat-zero-length    format string is empty

-Wgcc-compat    GCC does not allow the 'cleanup' attribute argument to be anything other than a simple identifier

-Wglobal-constructors    declaration requires a global constructor

-Wglobal-constructors    declaration requires a global destructor

-Wgnu-conditional-omitted-operand    use of GNU ?: conditional expression extension, omitting middle operand

-Wheader-hygiene    using namespace directive in global context in header

-Widiomatic-parentheses    using the result of an assignment as a condition without parentheses

-Wignored-attributes    'malloc' attribute only applies to functions returning a pointer type

-Wignored-attributes    %0 attribute only applies to %select{functions|unions|variables and functions|functions and methods|parameters|functions, methods and blocks|functions, methods, and classes|functions, methods, and parameters|classes|variables|methods|variables, functions and labels|fields and global variables|structs|variables, functions and tag types|thread-local variables|variables and fields|variables, data members and tag types|types and namespaces|Objective-C interfaces}1

-Wignored-attributes    '%0' attribute cannot be specified on a definition

-Wignored-attributes    __weak attribute cannot be specified on an automatic variable when ARC is not enabled

-Wignored-attributes    Objective-C GC does not allow weak variables on the stack

-Wignored-attributes    __weak attribute cannot be specified on a field declaration

-Wignored-attributes    attribute %0 cannot be applied to %select{functions|Objective-C method}1 without return value

-Wignored-attributes    attribute declaration must precede definition

-Wignored-attributes    attribute %0 is ignored, place it after \"%select{class|struct|union|interface|enum}1\" to apply attribute to type declaration

-Wignored-attributes    __declspec attribute %0 is not supported

-Wignored-attributes    attribute %0 ignored, because it cannot be applied to a type

-Wignored-attributes    attribute %0 after definition is ignored

-Wignored-attributes    %0 attribute ignored

-Wignored-attributes    'sentinel' attribute only supported for variadic %select{functions|blocks}0

-Wignored-attributes    'sentinel' attribute requires named arguments

-Wignored-attributes    '%0' only applies to %select{function|pointer|Objective-C object or block pointer}1 types type here is %2

-Wignored-attributes    'nonnull' attribute applied to function with no pointer arguments

-Wignored-attributes    %0 attribute can only be applied to instance variables or properties

-Wignored-attributes    ibaction attribute can only be applied to Objective-C instance methods

-Wignored-attributes    %0 calling convention ignored on variadic function

-Wignored-attributes    %0 only applies to variables with static storage duration and functions

-Wignored-attributes    %0 attribute argument not supported: %1

-Wignored-attributes    #pramga ms_struct can not be used with dynamic classes or structures

-Wignored-attributes    transparent union definition must contain at least one field transparent_union attribute ignored

-Wignored-attributes    first field of a transparent union cannot have %select{floating point|vector}0 type %1 transparent_union attribute ignored

-Wignored-attributes    'gnu_inline' attribute requires function to be marked 'inline', attribute ignored

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容