3

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"]);
}

}

どんな助けでも大歓迎です。みんなありがとう。

4

1 に答える 1