2011-12-25 2 views
1

자동 참조 계산 - ARC를 사용합니다. UI 중단을 방지하기 위해 백그라운드에서 절약을 수행하려고합니다. @autoreleasepool 생성자를 사용하려고 시도했지만 잘못된 배치 일 수 있습니다. 아래 코드를 수정하려면이 코드를 어떻게 수정해야합니까? 감사.performSelectorInBackground는 "풀에서 풀없이 자동으로 풀다운"오류를 나타냅니다.

2011-12-25 22:04:41.177 MakeMyDay[1106:5f5f] *** __NSAutoreleaseNoPool(): Object 0x102210 of class NSCFString autoreleased with no pool in place - just leaking 


-(void)beginAutoSave { 
    if (saveTimer==nil) { 
     NSLog(@"Begin Autosave"); 
     saveTimer = [NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(saveInBackground) userInfo:nil repeats:YES];      
    } 
} 


-(void)saveInBackground { 
     [self performSelectorInBackground:@selector(save) withObject:nil]; 
} 

- (void)save 
{  
    [wrapper setObject:currentVersion forKey:@"version"]; 
    if (taskStore!=nil) [wrapper setObject:taskStore forKey:@"taskStore"]; 
    [NSKeyedArchiver archiveRootObject:wrapper toFile:[self dataFilePathNew]]; 
    NSLog(@"saved"); 
} 

답변

5

당신은 당신이 autoreleasePool 블록 내부 방법을 저장 포장 :

-(void)save { 

    @autoreleasepool { 

    [wrapper setObject:currentVersion forKey:@"version"]; 
    if (taskStore!=nil) [wrapper setObject:taskStore forKey:@"taskStore"]; 
    [NSKeyedArchiver archiveRootObject:wrapper toFile:[self dataFilePathNew]]; 
    NSLog(@"saved"); 

    } 

} 
+0

완벽! 이제 작동합니다! :-디 – folium

관련 문제