最良の方法、および:
for (NSString *imePredmeta in [Data variables].mojiPredmeti) {
NSString *link = [[Data variables].rss objectForKey: imePredmeta];
NSURL *feedURL = [NSURL URLWithString: link];
feedParser = [[MWFeedParser alloc] initWithFeedURL:feedURL];
feedParser.delegate = self;
feedParser.feedParseType = ParseTypeFull; // Parse feed info and all items
feedParser.connectionType = ConnectionTypeAsynchronously;
[feedParser parse];
}
DEALLOC:MWFeedParserコードから
- (void)dealloc {
[formatter release];
[parsedItems release];
[itemsToDisplay release];
[feedParser release];
[super dealloc];
}
とinitWithFeedUrlですdealloc
その配列をリリースします。
// declare an iVar in your header file
NSMutableArray *feeds;
// instantiate the array, but release it first as you may call your method more
// than once
if (feeds) {
[feeds release];
}
feeds = [[NSMutableArray alloc] init];
for (NSString *imePredmeta in [Data variables].mojiPredmeti) {
...
// after calling parse on the feed, add it to the array and then release it.
// Objects added to an array are retained by the array so this is safe
[feedParser parse];
[feeds addObject:feedParser]; // <-- Add parser to array
[feedParser release]; // <-- Release parser
}
// then in your dealloc simply release the array, which will in-turn release all
// the parser objects it contains
- (void)dealloc {
[formatter release];
[parsedItems release];
[itemsToDisplay release];
[feeds release]; // <-- Release feeds array
// I've removed the call to release feedParser as it's already been released
[super dealloc];
}
このようにしますか? http://pastebin.com/YuH7b9hB – vburojevic
そうですね、ちょうどそのように:) 'dealloc'から' [feedParser release]; '行を削除することを忘れないでください。そうしないとクラッシュします。 –
いいえ、漏れはありません! :) もう1つの問題は、テーブルが空(フィードなし)で、私がリフレッシュをクリックすると、アプリがクラッシュする、これを解決する方法ですか? [feedParserリリース]のためですか?それは存在しないので、私は思いますか? – vburojevic