Я ломал голову над пробой, которая не совсем имеет смысла. Скажем, у меня есть следующее в моем проекте:
AppDelegate
MyClassA
MyClassB
MyViewController
В MyClassA есть свойство типа MyClassB с именем classB.
MyClassB имеет свойство типа NSMutableArray с именем указателя myArray.
Когда в MyViewController в viewDidLoad я создаю экземпляр MyClassA для доступа к myArray в его (MyClassA's) свойстве MyClassB, например:
MyClassA *classA = [[MyClassA alloc] init];
NSLog([NSString stringWithFormat:@"%i", [[[classA classB] myArray] count]);
Он будет отображать счет в журнале успешно и в то же время, дальнейший доступ к содержимому массива работает нормально.
Однако, все еще в MyViewController, когда MyClassA создается и получает доступ от делегата следующим образом:
AppDelegate *aDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSLog([NSString stringWithFormat:@"%i", [[[aDelegate classA] classB] myArray] count]]);
в журнале по-прежнему будет успешно отображаться счетчик, , но дальнейший доступ к содержимому в массиве не будет отображен без ошибок, кроме "Текущий язык: авто в настоящее время цель-c" - только одна строка из него .
Это странное поведение, которое я не могу понять. Есть ли разница между доступом к объектам, созданным в делегате, и доступом к объектам локально в функции (в viewDidLoad ViewController, как в примере) или чем-то другим?
Помощь очень ценится = D