回答
简短的回答:不,这是不可能做到这一点。您最多可以强制实施方法和属性。
你不能在@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. 空协议声明
- 5. Objective-C的协议向声明
- 6. 强制显式变量声明与gfortran
- 7. 目标C中的协议
- 8. 找不到协议声明
- 9. 符合协议的变量接受符合协议的变量
- 10. c#必须声明标量变量“@Kundenname”
- 11. 如何声明在协议
- 12. 协议声明未找到
- 13. C++变量声明
- 14. C变量声明
- 15. C++变量声明
- 16. @class与下面的协议声明?
- 17. 声明标量变量@@ SA_CONSOLE_HOSTNAME
- 18. 声明标量变量?
- 19. 找不到协议声明'AVCapturePhotoCaptureDelegate'
- 20. 的Visual C++变量声明
- 21. 必须声明标量变量/变量已经声明
- 22. 如何强制子/协议
- 23. 声明或不声明在目标c
- 24. 找不到“XXXX”的协议声明
- 25. 无法找到NSURLConnectionDataDelegate的协议声明
- 26. 在cpp中声明的gloabal变量在目标c中使用
- 27. 从本地协议强制使用Javascript协议中的http协议
- 28. 必须声明标量变量“@Hlava”必须声明标量变量“@Vaha”
- 29. 无法找到协议的声明“UIWebViewDelegate”
- 30. 找不到'FBLoginViewDelegate'的协议声明
谢谢鲁迪,这只是一个想法。当我执行一个非常奇怪的设计范例时。任何工作? – doNotCheckMyBlog
您不应该关心哪些实例变量对象会发生使用。声明属性并让实现该协议的类获取并设置它,但是他们想要。 – Tommy
没有解决方法。我不知道任何可以强制某个实例变量出现的东西。尝试使用属性作为替换。 –