我有过各种各样的情况,其中Objective-C类有一个属性需要是一个集合类(通常是NSArray).有没有一种标准的方法来实现它?能够只使用@synthesize来设置它会很棒.我可以将属性声明为NSMutableArray和@synthesize,但这不允许我强制执行哪些类型的对象可以放入集合中,也不会阻止客户端代码修改数组.我通常做的是这样的:
@property(nonatomic, readonly) NSArray *widgets;
- (void)addWidget:(Widget*)widget;
- (void)removeWidget:(Widget*)widget;
...
Run Code Online (Sandbox Code Playgroud)
该集合实现为NSMutableArray,NSArray包含传递回调用者的当前内容.对于必须是常见的场景,这似乎是很多编码.为了建立键值观察,需要进行更多的编码.
我错过了什么,或者设置收集属性真的这么多吗?