回答
簡短的回答:不,這是不可能做到這一點。您最多可以強制實施方法和屬性。
你不能在@protocol
中聲明ivars,但你可以強制符合類實現一個存取器和一個增變器,這聽起來像你正在得到的。例如:
@protocol Priced
@property(assign, nonatomic) double price;
@end
@interface Carrot : NSObject <Priced> {
double price;
}
@end
@implementation Carrot
@synthesize price;
@end
是啊我知道有方法A.K.A.行爲。但是想到迫使程序員添加一個必須的變量。謝謝 – doNotCheckMyBlog
您可以使對象成爲具體的子類。這將是確保它們包含所需內部組件的唯一方法。當然,如果你對這些類是如何在內部存儲數據感興趣的話......這違反了一些範例。
+1,儘管子類(用戶)類在Objective-C中似乎比(比如說)C++少得多,但「@ protocol」可能不是OP需要的正確工具。 – Ephemera
我傾向於經常創建子類......我認爲很多可可/ iOS程序員使用他們熟悉的工具,這是可以理解的...給出的比C++和Java已經在大學中與OOP一起教授〜 20年... –
- 1. 找不到協議聲明的目標C
- 2. 基本目標C變量聲明
- 3. 需要在目標c中聲明協議嗎?
- 4. 其中聲明爲在目標c重用協議
- 5. 「找不到協議聲明......」在採用類目標C
- 6. 空協議聲明
- 7. Objective-C的協議向聲明
- 8. 目標C中的協議
- 9. 強制顯式變量聲明與gfortran
- 10. 方法聲明的協議?
- 11. 強制https協議
- 12. 找不到協議聲明
- 13. 符合協議的變量接受符合協議的變量
- 14. 在目標C中聲明項目變量C
- 15. 錯誤在協議聲明
- 16. 如何聲明在協議
- 17. 聲明協議,如@class
- 18. c#必須聲明標量變量「@Kundenname」
- 19. c#變量聲明
- 20. C++變量聲明
- 21. C#變量聲明
- 22. C++變量聲明
- 23. C變量聲明
- 24. C - 聲明中的未聲明變量
- 25. @class與下面的協議聲明?
- 26. 聲明標量變量?
- 27. 聲明標量變量@@ SA_CONSOLE_HOSTNAME
- 28. 標量變量未聲明
- 29. 找不到協議聲明'AVCapturePhotoCaptureDelegate'
- 30. 聲明符合目標c協議與一個類別,並與另一類別
謝謝魯迪,這只是一個想法。當我執行一個非常奇怪的設計範例時。任何工作? – doNotCheckMyBlog
您不應該關心哪些實例變量對象會發生使用。聲明屬性並讓實現該協議的類獲取並設置它,但是他們想要。 – Tommy
沒有解決方法。我不知道任何可以強制某個實例變量出現的東西。嘗試使用屬性作爲替換。 –