В данный момент я наблюдаю несколько жестокое поведение: у меня есть ViewController для программного создания View.Для этого я сохранил имена UILabels, которые будут отображаться в NSDictionary, который содержится во внешнем классе, который является одиночным.К сожалению, NSDictionary недоступен, если я хочу использовать значения в loadView.Итак, я сделал несколько тестов: NSDictionary и его содержимое доступны в init, и класс, конечно же, NSCFDictionary.Если я смотрю на это в loadView, то класс иногда является NSCFDictionary, а иногда также CALayer или NSString ?!Я абсолютно не знаю, что происходит ???Это код, который я использую:
- (id) init
{
self = [super initWithNibName:nil bundle:nil];
if (self)
{
UITabBarItem *tbi = [self tabBarItem];
[tbi setTitle:@"xxx"];
}
NSEnumerator *num = [[[ValueDispatcher dispatcher] labelDic] keyEnumerator];
NSLog(@"Class(init): %@", [[[ValueDispatcher dispatcher] labelDic] class]);
NSLog(@"No: %i", [[[ValueDispatcher dispatcher] labelDic] count]);
for (id key in num)
{
NSLog(@"Key %@ Value %@", key, [[[ValueDispatcher dispatcher] labelDic] valueForKey:key]);
}
return self;
}
- (void)loadView
{
NSLog(@"Class(loadview)1: %@", [[[ValueDispatcher dispatcher] labelDic] class]);
NSLog(@"No: %i", [[[ValueDispatcher dispatcher] labelDic] count]);
NSEnumerator *num = [[[ValueDispatcher dispatcher] labelDic] keyEnumerator];
for (id key in num)
{
NSLog(@"Key34 %@ Value %@", key, [[[ValueDispatcher dispatcher] labelDic] valueForKey:key]);
}
...
В какой момент между init и loadView можно или нужно изменить NSDictionary?Кстати, еще одна информация, которая может быть важна: если я использую приведенный выше код и NSDictionary заполнен внешней службой, все работает нормально.Но если я заполняю NSDictionary из сохраненного plist во время запуска, он не работает, и я наблюдаю описанное поведение ...