_01_고성능 iOS 애플리케이션 개발 – 메모리 관리
- (NSString *)address {
NSString *ad = [[[NSString alloc] initWithString:@" 221B"] autorelease];
return ad;
}
...
- (void)showPersonAddress:(Person *)p {
NSString *address = [p address];
NSLog(@"Person's Address: %@", address);
}
__weak
: 강한 인용이 대상을 가리키지 않을 때 약한 인용은nil로 설정됩니다.__unsafe__unretained
: 강한 인용이 대상을 가리키지 않을 때 약한 인용은nil로 설정되지 않습니다.- (void)startCountdown {
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateFeed:) userInfo:nil repeats:YES];
}
- (void)dealloc {
[self.timer invalidate];
}
위의 예에서 순환 인용이 발생한 것은 분명하다. [self.timer invalidate]가 실행될 때까지 timer는self에 대한 강한 인용을 취소할 수 있지만 순환 인용이 만들어졌기 때문에 이곳의 dealloc는 호출되지 않고 timer는 invalidate를 실행하지 않는다.그래서 청소를 할 수 있는 방법을 사용자 정의해야 합니다.이러한 정리 방법은 현재 페이지를 떠나서 되돌아오기를 눌렀을 때 호출할 수 있습니다.또 다른 정리 방안은 소지 관계를 여러 클래스에 분산시키는 것이다. 즉, 작업 클래스가 구체적인 동작을 수행하고, 소유자 클래스가 작업을 호출하는 것이다.taget을 작업 클래스로 설정하는 프록시와 유사합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.