2013-10-10 2 views
0

어떤 경우에는 자동으로 변수를 사용해야합니까? 그리고 접근하면 다음에서 최고입니다 ..자동 출시 된 변수는 언제 사용합니까?

  1. 사용 obj= [[_className alloc]init]autorelease],

  2. obj = [[_className alloc]init] 그리고 [obj release]

    이 도와주세요로 OBJ를 놓습니다.

또한 다음과 같은 루프 제어 구조에서 alocal 개체를 만들고 사용하려면 무엇을 사용해야합니까? .

for(int i = 0;i<10;i++) 
{ 
    _className obj = [[_className alloc]init];//Should I use autorelease here? 

     . 
     . // Use this obj.. 
     . 
    [obj release];//If autoreleased is not used... 
} 

여기 나열된 옵션 중에서 무엇을 사용해야합니까? 어떤 것이 더 잘 최적화되어야합니까?

+3

아무 것도 놓을 필요가 없으므로 'ARC'로 이동해야합니다. – rckoenes

답변

2

가장 좋은 방법은 ARC를 사용하는 것이며 걱정할 필요가 없습니다.

하지만 ARC를 사용하지 않는 경우는 대개 케이스 2가 가장 좋습니다. 문제는 현재 자동 풀이 풀이 끊어지는 시점입니다. 작업이 많은 루프가 있거나 라이브러리에서 실행되는 컨텍스트를 알지 못해서 객체가 자동 리사이징 대신 릴리스 될 때 제어 할 수 있으며 나중에 알 수없는 시간에 발생합니다. 루프를위한 자체 autorelease 풀을 만들 수 있지만 명시 적 릴리스를 선호했습니다.

사례 1이 사용 된 장소는 속성에 객체를 할당 할 때 할당, 속성 할당, 해제 대신 autorelease를 사용하는 한 줄 명령문 일 것입니다.

ARC를 사용하지 않는 이유가 있습니까?

0

ARC를 사용하지 않는다면 곧 변수 범위를 모를 때 autorelease를 사용한다고 말합니다. 그리고 변수의 범위를 알 때 릴리스를 사용하십시오.

관련 문제