назначить NSString - PullRequest
       1

назначить NSString

0 голосов
/ 10 ноября 2011

У меня есть NSString, называемая анимацией, которая вызывается со следующим (рабочим) кодом:

 animation=[rowInDataBase objectAtIndex:2] ;
 NSLog(@"animation:%@",animation);

Когда я пытаюсь выполнить следующее:

previousAnimation=animation;

Предыдущая анимацияназначенный ccsprite.
Когда я пытаюсь войти в систему previousAnimation, чтобы проверить его значение с помощью NSLog(@"previous-animation:%@",previousAnimation);, приложение падает, если previousAnimation не равно NULL

Что я делаю неправильно в своем назначении

Ответы [ 3 ]

3 голосов
/ 10 ноября 2011

animation необходимо сохранить должным образом. Вам следует создать свойство с атрибутом retain для animation и previousAnimation и установить их следующим образом.

self.animation = [rowInDatabase objectAtIndex:2];
...
self.previousAnimation = self.animation;

Теперь оба значения будут правильно сохраняться между вызовами, у вас больше не будет проблем сбоев. Просто не забудьте высвободить оба значения в dealloc.

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

Вы пытаетесь скопировать строку? Если это так, вы должны делать:

NSString* previousAnimation = [NSString stringWithString:animation]; // autoreleased

или

NSString* previousAnimation = [animation copy]; // retain count 1, need to release

в противном случае вы должны оставить

previousAnimation = [animation retain];

и отпустите предыдущую анимацию, когда закончите.

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

Звучит так, как будто вы присваиваете переменную, которая уже была освобождена, поэтому память повторно используется каким-то другим случайным объектом (в случае, который вы упомянули, возможно, объектом ccsprite).Но трудно сказать наверняка, не видя код в более широком контексте.

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