그래프 응용 프로그램을 개발 중이며 렌더러를 OpenGL에서 Quartz2D로 변경하여 텍스트 렌더링을 더 쉽게 만들려고합니다.NSDate 메모리 문제 (다시)
NSMutableString이 자신의 설명을 추가하려고 시도 할 때 충돌을 일으키기 전에 갑작스럽게 자체적으로 할당이 해제 된 것처럼 보이는 유지 된 NSDate 객체입니다 (현재 'nil').
빌드 & analyze는 잠재적 인 문제를보고하지 않습니다.
간체, 코드는 다음과 같습니다
이NSDate* aDate
-(id)init
{
aDate = [[NSDate date] retain]
return self;
}
-(void)drawRect(CGRect)rect
{
NSMutableString* stringy = [[NSMutableString alloc] init];
//aDate is now deallocated and pointing at 0x0?
[stringy appendString:[aDate description]]; //Crash
}
내가 실제 코드는 별도의 스레드는 날짜 객체를 액세스와 함께, 더 많은 복잡한보다 것을 강조해야한다, 그러나 적절한 잠금 위치에 있습니다 [aDate release]
코드를 단계별로 실행할 때 어디에서도 호출되지 않습니다.
[[NSDate alloc] init]
을 사용하면 동일한 효과가 있습니다. init을 호출 할 첫 번째 함수라고 추가해야합니다.
내가 간과 한 것 또는 NSDate 개체가 자체를 릴리스하는 이유는 누구나 제안 할 수 있습니까?
큰 노트를 작성해야합니다. init 메소드에서 할당/초기화 된 것은 drawrect 메소드의 범위에 포함되지 않습니다. 클래스 외부에서 호출되고 실행되는 것처럼 말입니다. 문제는 NSDate 자체와 관련이없는 것 같습니다. – Tobster