XCode (4.6) が提供するマスター ビュー テンプレートを使用して単純な RSS フィード リーダーを作成します。
アプリケーションはタイトルでいっぱいの最初の画面をロードし、下または上にスクロールするとエラーが発生します。
コンソールに表示されるエラーは次のとおりです。
[__NSArrayM retain]: message sent to deallocated instance 0x7522d40
トレースにより、cellForRowAtIndex 関数のこの行にたどり着きます。XCode は、この行をシグナル SIGKILL としてマークします。(これは、デバッグに関するチュートリアルの指示に従ってゾンビ オブジェクトを設定したためかもしれません)。
NSMutableDictionary * news = (NSMutableDictionary *)[self.nf.newsStories objectAtIndex:indexPath.row];
これがその関数の残りの部分です。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString * cellId = @"feeds";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: cellId];
if(cell == nil){
cell = [[UITableViewCell alloc] init];
NSMutableDictionary * news = (NSMutableDictionary *)[self.nf.newsStories objectAtIndex:indexPath.row];
[cell.textLabel setText:[news objectForKey:@"title"]];
}
return cell;
}
これが私のviewDidLoad関数です。
- (void)viewDidLoad
{
[super viewDidLoad];
self.nf = [[NewsFeed alloc]init];
[self.nf setFeedURL:[NSURL URLWithString:@"http://rss.cnn.com/rss/cnn_topstories.rss"]];
[self.nf retrieveFromInternet];
//For debugging.
for(id newsItem in self.nf.newsStories){
NSDictionary * d = (NSDictionary *)newsItem;
NSLog(@"Title: %@\nDescription: %@", [d objectForKey:@"title"], [d objectForKey:@"description"]);
}
}
どんな助けでも大歓迎です。みんなありがとう。