从 Xcode 7.3.1 开始,目前没有区别:
- (void)foo:(NSInteger)__unused myInt;// [syntax 1]
- (void)foo:(NSInteger __unused)myInt;// [syntax 2]
- (void)foo:(__unused NSInteger)myInt;// [syntax 3]
但以下不起作用:
- (void)foo:(NSInteger)myInt __unused;// [doesn't work]
对于这方面的用法,Apple 建议使用 first syntax。(信息部分来自这个答案)
但两者之间有区别:
__unused NSString *foo, *bar; // [case a] attribute applies to foo and bar
NSString *foo __unused, *bar; // [case b] attribute applies to foo only
NSString * __unused foo, *bar; // [case c] attribute applies to foo only
NSString __unused *foo, *bar; // [case d] attribute applies to foo and bar
CFStringRef __unused foo, bar; // [case e] attribute applies to foo and bar
如果我们想__unused
应用于所有,语法 [a] 是我个人最好的,因为它没有歧义。
如果我们想__unused
应用于其中一个,语法 [b] 是我个人最好的,因为它没有歧义。
后三种解决方案是可以接受的,但在我看来令人困惑。(信息部分来自这个答案)