7

有沒有一種方法可以讓編譯器詢問ARC是否打開,然後根據該值進行條件編譯?例如,我有一個協議:使用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 

回答

14

你應該這樣做被啓用#if __has_feature(objc_arc)這將擴大到1 ARC的情況。

這是從ARC docs從鏘。

+0

太棒了。看了這麼多,找不到它。很棒! – FreeAsInBeer