Приложение Three20 падает после некоторых изменений - PullRequest
0 голосов
/ 26 февраля 2010

Во-первых, я следовал этому уроку: Урок по трибунам github

Мне кажется, у меня проблема с управлением памятью, которая приводит к сбою моего приложения.

я думаю, _properties в моих сообщенияхModel вылетает мое приложение.

при первом запуске приложения и изменении вида на postsTableViewController работает вполне нормально. я создал TTLauncherView, переход на этот viewcontroller приводит к сбою моего приложения.

вот теперь какой-то код моих постовМодель

// .h
@interface postsModel : TTURLRequestModel {
     NSMutableArray *_properties;
}
@property (nonatomic, readonly)NSMutableArray *properties;

// .m
@synthesize properties = _properties;   
- (void)requestDidFinishLoad:(TTURLRequest*)request {
     TTURLDataResponse* response = request.response;
     NSString* responseBody = [[NSString alloc] initWithData: response.data encoding: NSUTF8StringEncoding];

     NSDictionary *json =  [responseBody JSONValue];
     TT_RELEASE_SAFELY(responseBody);

     NSMutableArray *resultSet = [json objectForKey:@"posts"];
     TT_RELEASE_SAFELY(_properties);
     _properties = [NSMutableArray arrayWithArray:resultSet];
     TT_RELEASE_SAFELY(resultSet);

     [super requestDidFinishLoad:request];
}


- (void)dealloc {
     TT_RELEASE_SAFELY(_properties);

     [super dealloc];
}

удаление tt_release из моих _properties прекращает сбой приложения, возвращаясь из этого представления в представление Launcher, но повторное нажатие на мой TableView снова приводит к сбою приложения.

это немного сложно записать для меня, потому что это довольно много кода. я также могу предоставить свое приложение в виде файла .zip, если это поможет, оно очень просто прямо сейчас.

спасибо

1 Ответ

2 голосов
/ 26 февраля 2010

Да, ошибка распространена. Изменения:

_properties = [NSMutableArray arrayWithArray:resultSet];

Кому:

_properties = [[NSMutableArray arrayWithArray:resultSet] retain];

Или заставьте имущество сохранить и использовать:

self.properties = [NSMutableArray arrayWithArray:resultSet];
...