_UIApplicationHandleEvent удаляет данные - PullRequest
0 голосов
/ 22 февраля 2011

Моя ситуация: я создаю объект синглтон-класса. Объект содержит информацию о Ivars другого объекта и поле NSStrings.

-(id)init
 {
      [super init];     

      objectID=[NSString stringWithString:@"sqlRowId"];
      tableNameForBO=[[NSString stringWithString: @"BOComment"] lowercaseString];
      ivarListForBO=class_copyIvarList([BOComment class], &ivarCount);

      return self;
 };

Когда я вызываю объект, он отлично работает в первый раз. Все поля имеют правильную информацию. Но когда загрузка завершена (после applicationDidFinishLunching), приложение вызывает _UIApplicationHandleEvent, который удаляет информацию во всех полях, кроме objectID.

Итак, в программе у меня есть указатель на этот одноэлементный объект, который остается постоянным, но его поля содержат совершенно неверную информацию.

Н.С.Зомби говорит:

-[CFString respondsToSelector:]: message sent to deallocated instance 0x6022a10

-[CFString _cfTypeID]: message sent to deallocated instance 0x6022a10

-[CFString _cfTypeID]: message sent to deallocated instance 0x6022bb0

И приложение завершает работу с полученным сигналом программы: «EXC_BAD_ACCESS».

Что может вызвать это? Понятия не имею.

Спасибо большое!

Ответы [ 2 ]

0 голосов
/ 22 февраля 2011

Спасибо большое!Проблема была в неправильном распределении полей объекта.

После изменения init метод, что как:

- (id) init {self = [super init];

objectID=[[NSString alloc] initWithString:@"sqlRowId"];
tableNameForBO=[[NSString alloc] initWithString: [@"BOComment" lowercaseString]];       
ivarListForBO=class_copyIvarList([BOComment class], &ivarCount);    
insertClauseForBO = [[NSString alloc] initWithString: [self getInsertClauseForBO]];

return self;

};

все работает просто отлично!

Большое спасибо за ответ, который действительно помог - знал, где искать.

0 голосов
/ 22 февраля 2011

Кажется, что ваши объекты были случайно выпущены. Вы должны убедиться, что вы распределяете / сохраняете / освобождаете свои объекты соответствующим образом.

Посмотрите это очень хорошее введение в управление памятью iOS: http://interfacelab.com/objective-c-memory-management-for-lazy-people/

...