objc [23601] : 자리에없는 풀과 오토 릴리즈 __NSCFSet 클래스의 객체 0x12b090f0 - 단지 누출 - 디버깅하는 objc_autoreleaseNoPool()에 휴식이 자리에없는 풀과 오토 릴리즈 - 새로운 스레드가
왜 다음 코드 섹션이 위의 누수 오류를 인쇄합니까?
+ (BOOL)getSkipFlag
{
NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
if (![defs objectForKey:_BOOK_ID])
{
[defs setObject:@"yyyy" forKey:_BOOK_ID];
[defs synchronize];
}
if (![[defs objectForKey:_BOOK_ID] isEqualToString:@"xxxx"])
{
return NO;
}
return skipFlag;
}
사용
if (![ClassXYZ getSkipFlag])
....
나는 새로운 오토 릴리즈 풀을 설정하지 말았어야 그래서 나는 새로운 스레드를 사용하지 않습니다.
는참고 : NSString *temp = [[NSBundle mainBundle] pathForResource:_CONFIG_PLIST ofType:@"plist"];
는 - 나는 아이폰 OS 5.1 어떤 통찰력에 대한
감사를 사용하고 동일한 오류 를 인쇄 할 것이다.
업데이트 : ClassXYZ.m ... static BOOL skipFlag = NO;
세터 : + (공극) setSkipFlag (BOOL) boolValue { skipFlag = boolValue; }
사용법 : [ClassXYZ setSkipFlag : YES]; 정적 무효 convert_uri_to_file_name에 사용
(구조체 mg_connection * CONN, CONST의 char *의 URI, 의 char * 버피, size_t로 BUF_LEN) 당신이 사용되는 경우에 대한 좋은 지적을했다오마르. 예를 들어 ClassXYZ 자신의 인스턴스 메소드가 오류없이 작동하는 것으로 밝혀졌습니다.
아주 좋은 케이스를 가야 로그인하십시오
@autorelease
내부의 함수 호출을 넣으면 주위의 경우 (! [ClassXYZ getSkipFlag]) 또는 발신자를 게시 이것을 인쇄하는 함수 –감사합니다. Omar, pl 업데이트를 참조하십시오. – Zsolt
호기심에서 벗어나서, 함수 호출을 @autorelease 내부에두면 로그가 사라 집니까? –