bre*_*lis 5 collections properties objective-c
我有过各种各样的情况,其中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包含传递回调用者的当前内容.对于必须是常见的场景,这似乎是很多编码.为了建立键值观察,需要进行更多的编码.
我错过了什么,或者设置收集属性真的这么多吗?
您可以通过将属性声明为 NSArray,但使用 NSMutableArray 作为存储机制来防止客户端代码修改您的数组。@property 和 @synthesize 指令仍然有效。
确实没有一个好的方法来确保数组返回的对象的类型安全,但 Objective-C 程序员几乎从不担心这一点。这并不是一个常见问题。如果你确实想确保只有某种类型的对象进入和离开你的数组,你将必须为 NSArray 编写一个包装类来做到这一点。
| 归档时间: |
|
| 查看次数: |
248 次 |
| 最近记录: |