我有時喜歡將IB元素組織爲NSArray
,主要是爲了幫助我組織元素。大多數情況下,不同類別的對象會將它們放在同一個陣列中。雖然這是組織的一種方便的方式,我似乎無法環繞爲什麼,如果我有一個這樣的數組我的頭:for loops - 忽略對象類型?
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 *'的指針。 –