【发布时间】:2010-07-08 19:03:55
【问题描述】:
嘿,我在这样创建的字典中有这些 UIView 对象:
- (NSArray *)createNumberOfViews:(NSInteger)number
{
NSMutableArray *viewArray = [NSMutableArray array];
for(NSInteger i = 0; i < number; i++)
{
UIView *view = [[UIView alloc] init];
// any setup you want to do would go here, e.g.:
// view.backgroundColor = [UIColor blueColor];
[viewArray addObject:view];
[view release];
}
return viewArray;
}
所以现在我需要访问这个数组的每个成员并将它们分别添加到一个超级视图中,有什么想法可以继续执行此操作吗?
【问题讨论】:
-
快速浏览一下 NSArray 的文档(如果需要,还有 UIView)会告诉你方法
-
这确实是样式/偏好的问题,但除非返回的数组将被修改,否则您应该返回一个不可变的数组..
return [NSArray arrayWithArray:viewArray];。否则你应该改变你的方法声明返回NSMutableArray。 -
@ohhorob:这确实是一个偏好问题。他的数组是一个 NSMutableArray 的事实是一个实现细节,就像所有 NSArrays 实际上都是 NSMutableArrays 一样(说真的,检查
[[NSArray arrayWithObject:@"Hello"] isKindOfClass:[NSMutableArray class]])。他的方法签名是准确的,他的方法实现是高效的,所以真的没有必要把事情复杂化或暴露私有的实现细节 IMO。 -
我想我很清楚我的评论“真的是风格/偏好问题”!就个人而言,我为什么声明应该“声明”(是的,真的!)可变/不可变类集群的实际返回类型的原因是它可以提供对阅读和使用代码有用的语义。归根结底,这没什么大不了的,但仍然是一个有用的习惯。
标签: iphone objective-c xcode uiview