ProgramingTip

autoreleasepool이란 무엇입니까?

bestdevel 2020. 12. 25. 10:29
반응형

autoreleasepool이란 무엇입니까?


가능성이 :
Autorelease 풀을 사용하는 이유는 무엇입니까?

모든 Objective-C 시작 페이지가 @autoreleasepool{...}기본 함수 선언 아래에 기본 문과 함께로드 . 그러나이 사건은 무엇을 하는가? 새로운 Objective-C는 자동으로 개체를 해제하고 줄을 삭제하면 프로그램에 아무것도 변경되지 않습니다. 이 명령이 정말 필요합니까?


@autoreleasepool문 대신 사용하는, 이전과 같은 일을하고있다 NSAutoreleasePool의 클래스를. NSAutoreleasePool이 작동하는 방식은 전체 애플리케이션에 영향을 주었기 때문에 약간 이상했습니다. @autoreleasepool범위가 지정된 영역을 만들고 풀 안에 무엇이 있는지, 언제 배수 범위 (범위를 지정할 때)를 더 명확하게합니다. 또한 Apple에 따르면 더 많이입니다.

자동 해제 풀의 개념은 간단합니다. 인스턴스가 자동 해제 된 더 표시 될 때마다 (예 :) NSString* str = [[[NSString alloc] initWithString:@"hello"] autorelease];, 해당 시점에 보유 수가 +1이지만 실행 루프가 끝날 때 풀이 배수됩니다. , 그리고 autorelease는 모든 보유 수가 감소합니다. 그것은 자신을 위해 그것을 위해 무엇이든 준비하는 동안 물건을 주변에 보관하는 방법입니다.

ARC를 autorelease사용하면 개발자가 키워드를 사용하지 않지만 ARC를 관리하는 기본 시스템이를 삽입합니다. ( 주의 : 모든 ARC가 삽입되어하고있다 retain, release그리고 autorelease적절한 시간에 당신을 위해 전화). 이 때문에 기존 AutoreleasePool 개념을 유지해야합니다.

자동 해제 풀을 제거하면 개체가 있기 때문에 시작합니다.

참조 공연 환경에서 Cocoa는 항상 사용 가능한 자동 릴리스 풀이있을 것입니다. 풀을 사용할 수없는 경우 자동 해제 된 개체가 해제되지 않고 메모리가 누수됩니다. 이 상황에서 프로그램은 일반적으로 적절하게 경고 메시지를 기록합니다.

참조 URL : https://stackoverflow.com/questions/14677049/what-is-autoreleasepool

반응형