如何在类延续中编写协变读写属性?
给出以下示例
// MyClass.h
@interface MyClass {
NSMutableArray *queue;
}
@property (readonly, retain) NSArray *queue;
@end
,
// MyClass.m
@interface MyClass ()
@property (readwrite, retain) NSMutableArray *queue;
@end
@implementation MyClass
@synthesize queue;
@end
我从编译器收到 Property 'queue' type in 'MyClass' class continuation does not match class 'MyClass' property
警告。将“私有”协变设置器添加到类中而无需手动编写的最佳方法是什么?
Given the following example
// MyClass.h
@interface MyClass {
NSMutableArray *queue;
}
@property (readonly, retain) NSArray *queue;
@end
and
// MyClass.m
@interface MyClass ()
@property (readwrite, retain) NSMutableArray *queue;
@end
@implementation MyClass
@synthesize queue;
@end
I get a Property 'queue' type in 'MyClass' class continuation does not match class 'MyClass' property
warning from the compiler. What is the best way to add "private" covariant setters to a class without writing them by hand?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你做对了。这里的问题是 NSArray 不是 NSMutableArray。如果您也将私有属性设置为 NSArray,然后编写自己的接受 NSMutableArray 的 setter,那么它应该按预期工作。
You did it correctly. The issue here is NSArray isn't an NSMutableArray. If you make the private property a NSArray as well, and then write your own setter that accepts a NSMutableArray it should work as expected.