什么是Swift中的@discardableResult声明的ObjC版本

lea*_*vez 5 objective-c llvm ios swift

在Swift 3中,当没有使用返回值时会出现警告.@discardableResult声明将禁止该功能.

我如何在ObjC文件中声明这个,意思是,相反的 __attribute__((warn_unused_result))

LC *_*C 웃 5

ObjC 和 Swift < 3 中默认忽略函数的返回值。

如果您不捕获该方法返回的内容,则不会出现警告。但从 swift 3 开始,您必须使用返回值,如果您不想,请使用@discardable result方法的属性。

在 ObjC 中,如果你想发出警告,可以使用warn_unused_result属性。

-(int) mymethod : (int) a __attribute__((warn_unused_result)){

    return  2;

}

- (BOOL)doSomething  {

    return 2;
}



[self doSomething];
[self mymethod:2];//warning:ignoring return value of a function
Run Code Online (Sandbox Code Playgroud)

  • 但是我如何注释 objc api 中定义的方法以不在 swift 4 中生成警告? (2认同)