Objective C中的不可用属性是什么意思?

cfi*_*her 10 objective-c clang function-attributes

Objective C中的不可用属性有什么作用?

__attribute__((unavailable("message")))
Run Code Online (Sandbox Code Playgroud)

Clang中有这个和其他属性的在线参考吗?

Car*_*rum 13

unavailable属性标记一个函数声明,以便在有人尝试使用它时生成错误消息.它与deprecated属性基本相同,只是尝试使用deprecated函数只会导致警告,但使用unavailable一个会导致错误.文档位于:http://clang.llvm.org/docs/LanguageExtensions.html

这是一个简单的用例示例.首先是代码:

void badFunction(void) __attribute__((unavailable("Don't use badFunction, it won't work.")));

int main(void)
{
    badFunction();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后构建它:

$ make example
cc     example.c   -o example
example.c:5:5: error: 'badFunction' is unavailable: Don't use badFunction, it
      won't work.
    badFunction();
    ^
example.c:1:6: note: function has been explicitly marked unavailable here
void badFunction(void) __attribute__((unavailable("Don't use...
     ^
1 error generated.
make: *** [example] Error 1
Run Code Online (Sandbox Code Playgroud)