强制变量声明的协议 - Objective C

发布于 2024-12-02 20:55:16 字数 73 浏览 0 评论 0原文

是否可以在@protocol中声明变量?只是为了强制程序员在实现类(实现此协议的类)标头和实现中添加这些变量?

谢谢

Is it possible to declare variable in @protocol? Just to force programmers to add those variable in implementing class's(classes which implements this protocol) header and implementation?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

三五鸿雁 2024-12-09 20:55:16

简短的回答:不,不可能这样做。您最多可以强制方法和属性的可用性。

Short answer: No, it isn't possible to do that. You can enforce the availability of methods and properties at most.

未蓝澄海的烟 2024-12-09 20:55:16

您不能在 @protocol 中声明 ivars,但您可以强制一致的类实现访问器和修改器,这听起来像您所得到的。例如:

@protocol Priced
@property(assign, nonatomic) double price;
@end

@interface Carrot : NSObject <Priced> {
    double price;
}
@end
@implementation Carrot
@synthesize price;
@end

You can't declare ivars in @protocols but you can force the conforming class to implement an accessor and a mutator, which sounds like what you're getting at. For example:

@protocol Priced
@property(assign, nonatomic) double price;
@end

@interface Carrot : NSObject <Priced> {
    double price;
}
@end
@implementation Carrot
@synthesize price;
@end
眼眸 2024-12-09 20:55:16

您可以将对象设为具体的子类。这是确保它们包含您需要的内部结构的唯一方法。当然,如果您对类如何在内部存储数据感兴趣……这违反了一些 oop 范例。

You could make the objects a concrete subclass. That would be the only way to ensure that they contained the internals that you needed. Of course if you are interested in how the classes are storing their data internally... That is violating some oop paradigms.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文