Dev*_*shi 24 cocoa objective-c ios7
我试图声明一个像这样的指定初始化器:
- (instancetype)initWithDelegate:(id <MyDelegate>)delegate NS_DESIGNATED_INITIALIZER;
Run Code Online (Sandbox Code Playgroud)
但是它向我显示了这个编译错误:
Expected ':'
Run Code Online (Sandbox Code Playgroud)
有趣的是,当我尝试这样写时(参考链接:采用现代Objective-C) -
- (instancetype)init NS_DESIGNATED_INITIALIZER;
Run Code Online (Sandbox Code Playgroud)
它显示了这个错误:
Expected ';' after method prototype.
Run Code Online (Sandbox Code Playgroud)
有关如何正确使用NS_DESIGNATED_INITIALIZER的任何想法?
Sul*_*han 34
NS_DESIGNATED_INITIALIZER在Xcode 5的库头文件中没有定义宏 - 您需要Xcode 6才能使用它.请注意您的链接显示"预发布".
宏以下列方式定义(引用NSObjCRuntime.h)
#ifndef NS_DESIGNATED_INITIALIZER
#if __has_attribute(objc_designated_initializer)
#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
#else
#define NS_DESIGNATED_INITIALIZER
#endif
#endif
Run Code Online (Sandbox Code Playgroud)
请注意,您仍然可以使用
- (instancetype)initWithDelegate:(id <MyDelegate>)delegate __attribute__((objc_designated_initializer));
Run Code Online (Sandbox Code Playgroud)
在Xcode 5中,您可以将该宏明确添加到预编译的头文件中.
| 归档时间: |
|
| 查看次数: |
9865 次 |
| 最近记录: |