Cocos2d MenuItem Селектор и доступ к переменной экземпляра - PullRequest
0 голосов
/ 07 октября 2010

У меня есть переменная экземпляра, объявленная в файле реализации, доступ к которой можно получить с помощью свойства, определенного synthesize

@synthesize myProperty

Теперь я хочу присвоить этому свойству что-то внутри события Selector объекта MenuItem в cocos2dбиблиотека.Вы можете думать об этом как о доступе к myProperty в функции обратного вызова.По какой-то причине всякий раз, когда я получаю доступ к свойству, оно говорит: «свойство выходит за рамки».Поэтому я попытался назначить доступ к self.myProperty, который работал !!

Но теперь у меня утечка памяти в self.myProperty.Если я выпускаю self.myProperty в dealloc, он выдает исключение, сообщающее, что у меня также есть выпуск myProperty.

ОБНОВЛЕНИЕ 1: (Код)

NSString * голос;

@ свойство (неатомное, сохранение) NSString * voice;@ Synthesize голос;

-(void)repeatAlphabet:(id)sender 

{
 *// I cannot access the voice variable in this function.* 

[[SimpleAudioEngine sharedEngine] playEffect:[[voice lowercaseString] stringByAppendingString:@".caf"]]; 
}

-(void) addRepeatButtonOnScreen 

{

CCMenuItemImage * menuItem1 =[CCMenuItemImage itemFromNormalImage:@"image1.png"

selectedImage: @"image2.png"

  target:self

selector:@selector(repeatAlphabet:)];

CCMenu *menu = [CCMenu menuWithItems:menuItem1,nil]; 

menu.position = ccp(30, 450); 

[self addChild:menu]; 


}

1 Ответ

0 голосов
/ 07 октября 2010

Предполагая, что вы определили ivar, соответствующий вашему свойству, также называемый myProperty, и что ваше свойство имеет значение retain или copy: в вашем dealloc вы должны сделать [myProperty release];, а не [self.myProperty release].

ОБНОВЛЕНИЕ: после обсуждения и показанного кода ... «вне области» может быть признаком того, что не сохранено значение, которое следует сохранить.Например, для строки value = @"Value" не сохраняется (и станет вне области видимости), исправлено с помощью self.value = @"Value" или value = [@"Value" retain].

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