iOS 메모리 관리 arc
2412 단어 메모리 관리
ios 자동 풀 장(autoreleasepool)
#import
@interface Test : NSObject
@end
Test *test = [[Test alloc]init];
NSLog(@"대상 초기 화 이후 인용 수:%x",[test retainCount]);
[pool drain];
[test autorelease];
NSLog(@"대상 이 retain 을 한 후의 인용 수 는:%x",[test retainCount]);
[pool drain];
return 0;
autorelease 를 사용 하면 이 대상 은 자동 방출 탱크 에 넣 고 시스템 은 모든 대상 의 사용 상황 을 자동 으로 추적 하 며 자동 방출 탱크 를 방출 할 때 풀 의 모든 대상 을 방출 합 니 다.
위의 코드 는 책 에 있 는 것 이지 만 autoreleasepool 의 용법 을 잘 설명 하 였 습 니 다.예전 에 선생님 들 은 죽 어 라 책 을 읽 으 면 안 된다 고 말씀 하 셨 습 니 다.생각 을 많이 하고 인 스 턴 스 를 직접 쓰 며 질문 을 많이 하고 토론 을 많이 해 야 합 니 다.
여기 서 제 가 생각 하 는 것 을 적어 서 여러분 께 참고 하도록 하 겠 습 니 다.
1.autoreleasepool 은 풀 의 대상 만 작용 할 수 있 습 니 다.우 리 는 수 동 으로 메모 리 를 관리 합 니 다.즉,수 동 또는 자동(시스템)두 개의 서로 다른 메커니즘 을 관리 합 니 다.
2.[test autorelease]를 사용 하고 풀 드 레 인 을 사용 합 니 다.
3.autoreleasepool (Garbage Colliction)
4.aotoreleasepool 이 바닥 에 도착 하면 언제 풀 립 니까?pool drain 이 풀 렸 나 요?
모든 Runloop 에 대해 시스템 은 Autorelease pool(자 연 스 럽 게 여러 개의 Autorelease pool 이 있 을 것 입 니 다)을 암시 적 으로 만 듭 니 다.그러면 모든 release pool 은 CallStack 과 같은 스 택 구 조 를 구성 합 니 다.모든 Runloop 이 끝 날 때 현재 스 택 꼭대기 의 Autorelease pool 은 소각 되 고 이 pool 의 모든 Object 는 release 됩 니 다.그럼 뭐 가 Runloop 인가요?UI 이벤트,Timer call,delegate call 은 모두 새로운 Runloop 입 니 다.(공식 문서 에서 이 설명 을 찾 을 수 없습니다)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MRC 아래의 initWithFormat:과stringWithFormat:이 두 가지 방법은 같다.우리가 알아야 할 것은 어떻게 그들을 정확하게 사용하는가이다.initWithFormat는 새로운 alloc 실례에 호출되어야 하는 실례적인 방법입니다. 이것은 당신이 그것을 석방할 책임이 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.