有没有办法询问编译器是否打开ARC,然后根据该值有条件地编译?例如,我有一个协议:
@protocol ProtocolA
@required
-(void)protocolMethodOne
@optional
-(void)protocolMethodTwo;
@end
Run Code Online (Sandbox Code Playgroud)
如果我使用ARC,我想protocolMethodA在使用ARC时可选,并且在不使用ARC时需要.这是因为使用此方法的主要原因之一是取消分配对象实例.
话虽如此,这就是我想要发生的事情:
@protocol ProtocolA
#ifdef SOME_ARC_VARIABLE
@optional
#else
@required
#endif
-(void)protocolMethodOne
@optional
-(void)protocolMethodTwo;
@end
Run Code Online (Sandbox Code Playgroud) iphone objective-c conditional-compilation automatic-ref-counting
这可能是一个愚蠢的问题,但我只是想知道.我希望我的代码能够以编程方式检测ARC是否已启用.我怎么做?有没有我可以检查的旗帜?实际上问题是,我写了一个开源库.我已经使用release,并retain在里面.如果其他人使用我启用ARC的库文件,我不希望他们得到任何错误.我怎么做到这一点?还是有任何可能的方法我可以提供任何工具来编译我的库之前使用它?