【问题标题】:Conditional compilation when using ARC使用 ARC 时的条件编译
【发布时间】:2012-01-16 20:09:27
【问题描述】:

有没有办法询问编译器是否打开了 ARC,然后根据该值有条件地编译?例如,我有一个协议:

@protocol ProtocolA

@required
-(void)protocolMethodOne

@optional
-(void)protocolMethodTwo;

@end

如果我使用 ARC,我想在使用 ARC 时将 protocolMethodA 设为可选,在不使用 ARC 时设为必需。这是因为使用此方法的主要原因之一是释放对象实例。

话虽如此,这就是我想要发生的事情:

@protocol ProtocolA

#ifdef SOME_ARC_VARIABLE
    @optional
#else
    @required
#endif
-(void)protocolMethodOne

@optional
-(void)protocolMethodTwo;

@end

【问题讨论】:

    标签: iphone objective-c automatic-ref-counting conditional-compilation


    【解决方案1】:

    您应该这样做 #if __has_feature(objc_arc) 在启用 ARC 的情况下将扩展为 1。

    这是来自 Clang 的 ARC docs

    【讨论】:

    • 太棒了。找遍了这个,没找到。效果很好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    相关资源
    最近更新 更多