экземпляр класса не может быть ссылкой внутри метода IBAction в цель - PullRequest
0 голосов
/ 17 ноября 2011

Я пишу небольшую карточную игру для iphone,

скажем, у меня есть класс player.h / .m, у которого есть Mutable Array myCard

Я пишу

@interface Player : NSObject{
    NSMutableArray *myCard;
}
@property (nonatomic) NSMutableArray *myCard;

@end

в контроллере вида, controller.h

#import "Player.h"
@interface controller : UIViewController {
    Player *playerMe;
}

в контроллере вида, controller.m

 - (Player *)playerMe
{
    if (!playerMe) playerMe = [[Player alloc] init];
    return playerMe; 
}

, тогда у меня есть метод экземпляра для добавления объекта в playerMe.myCard, все хорошо до сих пор.

У меня есть кнопка, которая была добавлена ​​в IB, и есть действие IB:

- (IBAction)btnSort:(id)sender {
    //do something with self.playerMe.myCard
}

Затем появляется проблема, я смотрю на окно отладки иищите значение во всех переменных.До того, как кнопка была нажата, self.playMe.myCard работает с определенным объектом.как только кнопка была нажата, self.playerMe.myCard равен нулю и не имеет ничего внутри

Итак, я хотел бы знать, почему self.playerMe.myCard не может быть ссылкой, пока self.playMe в порядке, это то, чтонасчет определения @property?

Спасибо!

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

я наконец решил проблему, изменив атрибут @property и пользовательский установщик для myCard

player.h

@property (nonatomic,retain) NSMutableArray *myCard;

player.m

- (void)setMyCard:(NSMutableArray *)aCardArr
{
    [myCard autorelease];
    myCard = [[NSMutableArray arrayWithArray:aCardArr] retain];
}

Может быть, это просто базовые вещи, но как новичок в объективе-c, просто отправьте сюда сюда кого-то вроде меня в качестве справки.

Спасибо за вашу помощь

1 голос
/ 17 ноября 2011

Попробуйте сделать явное retain свойство для myCard . Это может быть утечка при использовании свойства assign по умолчанию.

@property (nonatomic, retain) NSMutableArray *myCard;
...