【发布时间】:2011-10-29 07:39:24
【问题描述】:
我有时喜欢将 IB 元素组织到 NSArrays 中,主要是为了帮助我组织元素。大多数情况下,不同类别的对象会彼此组成同一个数组。虽然这种 是一种方便的组织方式,但我似乎无法理解为什么如果我有这样的数组:
NSArray *array = [NSArray arrayWithObjects:((UITextField *)textField), ((UISegmentedController *)segmentedController), nil];
为什么当我像这样放置for 循环时收到“不响应选择器”消息:
for (UITextField *text in array) {
[text setText:@""];
}
for 循环似乎传递了不属于 UITextField 类的对象。
如果指定数组中的所有对象都通过循环,那么声明对象的类有什么意义?
编辑仅供参考,这是我目前的处理方式:
for (id *object in array) {
if ([object isMemberOfClass:[UITextField class]]) {
foo();
} else if ([object isMemberOfClass:[UISegmentedController class]) {
bar();
}
}
【问题讨论】:
-
id已经是指针类型。 99.9% 的时间,您想使用普通的id类型,而不是指向id*的指针。
标签: iphone objective-c for-loop nsarray