0

最初に、私はこのチュートリアルに従いました:three20githubチュートリアル

アプリケーションをクラッシュさせるメモリ管理の問題があると思います。

_propertiesのpostsModelでアプリケーションがクラッシュすると思います。

初めてアプリケーションを起動し、ビューを自分のpostsTableViewController 作品に変更するのは非常にうまくいきました。TTLauncherViewを作成しましたが、このビューコントローラーに戻すとアプリがクラッシュします。

ここに私のpostsModelのコードがあります

// .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];
}

_propertiesのtt_releaseを削除すると、このビューからランチャービューに戻ってアプリケーションのクラッシュが停止しますが、TableViewをもう一度クリックすると、アプリケーションが再度クラッシュします。

コードがかなり多いので、書き留めるのは少し難しいです。役立つ場合は、アプリを.zipファイルとして提供することもできます。これは今のところ非常に基本的なことです。

感謝

4

1 に答える 1

2

はい、バグは一般的なものです。変化する:

_properties = [NSMutableArray arrayWithArray:resultSet];

に:

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

または、プロパティを保持して使用します。

self.properties = [NSMutableArray arrayWithArray:resultSet];
于 2010-02-25T21:57:10.130 に答える