этот вопрос предоставил больше информации о том, чего вы пытаетесь достичь. Поскольку вы точно знаете, какой набор меток вы пытаетесь создать в каждом случае, я настоятельно рекомендую использовать изменяемые словари вместо массивов.
Для иллюстрации дано следующее гипотетическое определение класса:
@interface MyClass: NSObject {
NSMutableDictionary * _labelDict;
}
@property (nonatomic, retain) NSMutableDictionary * labelDict;
- ( void )methodA;
- ( void )methodB;
- (NSMutableDictionary *) labelsForRunLoop: (NSUInteger) loopIdx;
@end
У вас будет следующая гипотетическая реализация класса:
@implementation MyClass
@synthesize labelDict = _labelDict;
- ( id ) init {
if( ( self = [ super init ] ) ) {
[self setLabelDict: [NSMutableDictionary dictionaryWithCapacity: 8]];
}
}
- ( void ) dealloc {
[ self.labelDict release ];
[ super dealloc ];
}
- ( void ) methodA {
for(NSUInteger i = 0; i < some index; i++) {
[self.labelDict setObject: [self labelsForRunLoop: i] forKey: [NSString stringWithFormat: @"%d", i]];
}
}
- ( void ) methodB {
// Locate the label you need to work with. Example based on this crude pseudo code
NSMutableDictionary * subDict = (NSMutableDictionary *) [self.labelDict objectForKey: @"0"];
UILabel * theLabel = (UILabel * ) [subDict objectForKey: @"UILabel.Z"];
theLabel.text = @"Label 1";
}
- (NSMutableDictionary *) labelsForRunLoop: (NSUInteger) loopIdx {
NSMutableDictionary * dictionary = [NSMutableDictionary dictionaryWithCapacity: 4] ;
[dictionary setObject: create-w-label forKey: @"UILabel.W"];
[dictionary setObject: create-x-label forKey: @"UILabel.X"];
[dictionary setObject: create-y-label forKey: @"UILabel.Y"];
[dictionary setObject: create-z-label forKey: @"UILabel.Z"];
return [dictionary retain];
}
@end
Это в основном псевдокод, который не будет успешно скомпилирован. Однако это послужит хорошей отправной точкой. Вы, вероятно, хотите хранить каждый словарь меток под некоторым ключом, который имеет смысл, вместо того, чтобы просто использовать индекс цикла. Надеюсь, это поможет.