Получить переменную экземпляра? - PullRequest
0 голосов
/ 01 июля 2010

У меня есть следующий класс:

@interface Gamer : CCNode {
NSMutableArray * cards;
}
@property (nonatomic, retain) NSMutableArray * cards;

+(id) CreatePlayer;
-(BOOL)SetCardsArr:(NSMutableArray *) cs;
-(BOOL)GetCardForMove:(Card*) card actionCard:(Card*)selCard;
@end

@implementation Gamer

@synthesize cards;

+(id) CreatePlayer
{
return [[self alloc] init];
}

-(BOOL) SetCardsArr:(NSMutableArray *) cs
{
if (!cs) return NO; 
cards = [cs copy];
return YES;  
}
-(BOOL)GetCardForMove:(Card*) card actionCard:(Card*)selCard;
{
for (Card * curCard in cards)
    {
    if ([curCard GetCardSuit] == [selCard GetCardSuit])
            {
        selCard = curCard;
        break;
    }
}
return YES;
}

 -(id) init
 {
if(![super init]) return nil;

return self;
 }
 - (void)dealloc
 {
[cards release];
[super dealloc];
 }
@end

В моем основном игровом классе я устанавливаю массив геймеров с помощью метода SetCardsArr.И после некоторых действий я пытаюсь получить карту Gamer с помощью метода GetCardForMove следующим образом:

Card * moveCard = nil;
    Card * selCard = card;
[mGamer GetCardForMove:moveCard actionCard:selCard];

Функция GetCardForMove работает нормально, карта найдена и назначена правильно, но Card * moveCard - ноль :(. Я новичок вObjective-C и немного запутался, пожалуйста, укажите мне на мои ошибки.

1 Ответ

0 голосов
/ 01 июля 2010

На самом деле карта вообще не назначена.Если вы хотите, чтобы ваш код был вне метода, чтобы увидеть карту, сделайте это (лучший подход):

- (Card *)cardForActionCard: (Card *)selCard {
  //stuff
  return usefulCard;
}

или это (наиболее похоже на текущий код):

- (BOOL)getCardForMove: (Card **)card actionCard: (Card *)selCard {
  //stuff
  if (card) {
    *card = usefulCard;
  }
  return YES;
}

Кстати, это не имеет отношения к вашему вопросу, но ваш код содержит пару проблем, касающихся управления памятью (я предполагаю, что у вас есть метод dealloc, который находится в среде с сохраняемым счетом).Не нужно их здесь освещать, просто запустите «Построить и проанализировать» и исправить проблемы, о которых он сообщает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...