Эй, я новичок в Objective-C 2.0 и Xcode, так что простите, если мне не хватает чего-то элементарного здесь. В любом случае, я пытаюсь создать свой собственный класс UIViewController под названием GameView, чтобы отобразить новое представление. Для работы в игре мне нужно отслеживать NSArray, который я хочу загрузить из файла plist. Я создал метод loadGame, который должен загрузить правильный NSArray в переменную экземпляра. Однако оказывается, что после выполнения метода переменная экземпляра теряет отслеживание массива. Его легче, если я просто показать вам код ....Почему мой класс UIViewController не отслеживает переменную экземпляра NSArray
@interface GameView : UIViewController {
IBOutlet UIView *view
IBOutlet UILabel *label;
NSArray *currentGame;
}
-(IBOutlet)next;
-(void)loadDefault;
...
@implementation GameView
- (IBOutlet)next{
int numElements = [currentGame count];
int r = rand() % numElements;
NSString *myString = [currentGame objectAtIndex:(NSUInteger)r];
[label setText: myString];
}
- (void)loadDefault {
NSDictionary *games;
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"Games.plist"];
games = [NSDictionary dictionaryWithContentsOfFile:finalPath];
currentGame = [games objectForKey:@"Default"];
}
когда loadDefault вызывается, все работает отлично, но когда я пытаюсь использовать currentGame NSArray позже в вызове метода к другому, currentGame, как представляется, ноль. Я также знаю о проблемах управления памятью с помощью этого кода. Любая помощь будет оценена с этой проблемой.
Откуда вы знаете, что «все работает отлично»? Вы переходите к отладчику и видите, что 'games' и' currentGame' правильно установлены на значения, отличные от nil? – Chuck