autoreleasepool이란 무엇입니까?
모든 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
'ProgramingTip' 카테고리의 다른 글
JavaScript : 좋은 부분 -`new`를 전혀 사용하지 않는 방법 (0) | 2020.12.25 |
---|---|
CMAKE_MAKE_PROGRAM을 사용할 수 없습니다. (0) | 2020.12.25 |
AWK를 사용하여 여러 파일의 입력 처리 (0) | 2020.12.25 |
AngularJs에서 개인 메소드로 테스트 가능한 컨트롤러를 작성하는 방법은 무엇입니까? (0) | 2020.12.25 |
node.js에서 하나의 "npm test"명령으로 mocha 및 mocha-phantomjs 테스트를 실행하는 방법은 무엇입니까? (0) | 2020.12.25 |