我有這樣的事情:使用__attribute __((objc_requires_super))與協議
@protocol MyProtocol <NSObject>
- (void)oneMethod;
@end
。
@interface BaseClassWithProtocol : NSObject <MyProtocol>
@end
。
@interface ChildClassWithProtocol : BaseClassWithProtocol
@end
BaseClassWithProtocol
已實施oneMethod
,我想顯示警告,如果ChildClassWithProtocol
不在其oneMethod
實現中調用超。
但我不知道我應該在哪裏寫__attribute__((objc_requires_super))
。
將它寫入協議不支持,而在.h中重新定義oneMethod看起來很愚蠢。
那麼有沒有什麼標準的方法可以處理這個問題?
謝謝。 在.h中重新聲明oneMethod不會覆蓋接口,它恰好與協議中聲明的聲明相同。我不知道我的理解是否正確。但是,如果在.h和協議中聲明的這兩個方法具有相同的名稱但參數類型不同呢?這就是爲什麼我認爲它很愚蠢,因爲我不知道哪一個是最終的聲明,而且兩次聲明似乎很冗長。但是,它似乎是我可以放入鐺屬性的唯一地方,我將採取這一做法。 – Tepmnthar
但是,你能告訴我swift協議擴展是否可以做到這一點(我對swift知之甚少)。或者你能告訴我如何用一個具有協議和抽象類的類(不是其他語言中的「抽象類」,僅僅意味着比其子的抽象更抽象,也許不實現某些方法),使用宏/鏗鏘屬性/還是其他? – Tepmnthar
@Tepmnthar同名,但參數類型不同?這兩種方法將被視爲兩種不同的方法,因爲Objective-C沒有*方法重載* – nayem