Наближавам края на училищен проект с програмиране в Xcode, но точно сега имам малък, но изключително досаден проблем: изтичане на памет. Течът е проследен до следния ред код:
@autoreleasepool {
[NSThread detachNewThreadSelector:@selector(updateThread) toTarget:self withObject:nil];
}
Когато коментирам това, течът изчезна. Очевидно нещо се обърка в autoreleasepool: все още съм малко нов в тези (особено когато използвам ARC), но теми като този ми изясни, че използването на @autoreleasepool трябва да е достатъчно.
По някаква причина това не е така за моя код. Предполагам, че пропускам нещо тук: ако някой може да даде някакви идеи за това какъв може да е проблемът, тогава това ще бъде високо оценено. Просто ми кажете, ако трябва да публикувам още код, това няма да е проблем: само за четливостта на въпроса се опитвам да го огранича до основния проблем.
Благодаря предварително!
РЕДАКТИРАНЕ:
Благодаря ви за първите отговори! Проблемът обаче продължава да съществува... Ще публикувам малко повече код, за да изясня малко нещата. Нишката е стартирана във viewDidLoad:
/*
Everything mentioned here will be done after loading.
*/
- (void)viewDidLoad
{
// Do standard setup
[super viewDidLoad];
// Do any additional setup before loading the view from its nib.
self.title = @"Blog Manager";
// Activate edit mode
[tbvBlogList setEditing:YES animated:YES];
tbvBlogList.allowsSelectionDuringEditing = YES;
[NSThread detachNewThreadSelector:@selector(updateThread) toTarget:self withObject:nil];
UIImage *btnImage = [UIImage imageNamed:@"iPhone_General_Button_Add_Blog.png"];
UIButton *viewBtnAddBlog = [UIButton buttonWithType:UIButtonTypeCustom];
[viewBtnAddBlog setImage:btnImage forState:UIControlStateNormal];
viewBtnAddBlog.frame = CGRectMake(0, 0, 80, 36);
[viewBtnAddBlog addTarget:self action:@selector(addBlogByButton:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *btnAddBlog = [[UIBarButtonItem alloc] initWithCustomView:viewBtnAddBlog];
btnAddBlog.tintColor = [UIColor clearColor];
self.navigationItem.rightBarButtonItem = btnAddBlog;
}
След това, другите функции, които се използват за нишка:
/*
Thread to update the progress bar with.
*/
- (void)updateThread
{
@autoreleasepool {
while(YES){
[self performSelectorOnMainThread:@selector(updateProgressBar) withObject:nil waitUntilDone:false];
[NSThread sleepForTimeInterval:0.1f];
}
}
}
/*
Updates the progress bar.
*/
- (void)updateProgressBar
{
pvProgress.progress = dProgress;
}
Ако има нещо, което си струва да се спомене: използвам Xcode 4.2.1. Благодаря отново за подкрепата!