我對我所做的類有一個類別,並且該類別符合協議,該協議在其實現中需要屬性。但是,由於我屬於某個類別,因此我無法在執行類別時綜合該屬性。正因爲如此,我難以理解如何實現setter方法(當我只保留協議的屬性時,它可以正常工作,因爲我需要的只是訪問方法)。iOS類別符合具有以下屬性的協議:如何實現
這是我的協議:
@protocol SomeProtocol <NSObject>
@property (nonatomic) BOOL didDisplayRecommendation;
@end
我知道如果我這樣做,我會得到一個無限循環:
- (void)setDidDisplayRecommendation:(BOOL)didDisplayRecommendation
{
self.didDisplayRecommendation = didDisplayRecommendation;
}
但當我嘗試這個,我得到一個編譯錯誤:
- (void)setDidDisplayRecommendation:(BOOL)didDisplayRecommendation
{
_didDisplayRecommendation = didDisplayRecommendation;
}
請注意,didDisplayRecommendation是協議中的屬性。解決這個問題的最好方法是什麼?提前致謝!
[Objective-C的類別和新的伊娃(的可能重複http://stackoverflow.com/questions/10502539/ objective-c-category-and-new-ivar) –
不是重複的,不涉及符合協議的問題 – Mason
您可以在具有(at)屬性的類別中添加「特殊」屬性(nonatomic,retain) MyClass * anObject - 但是在實現文件中,您可以做的只是動態anObject,然後可以使用關聯引用cfunction來僞裝其他對象來代替該屬性。它的工作原理並不是解決方法,您可以在商業應用程序中執行此操作,也可以通過執行協議檢查。 – unmircea