2010-06-29 4 views
0

아이폰 앱의 메모리 관리에 아직 새로운 점은 새내기 질문입니다. AppDelegate의 속성을 사용하는 몇 가지 방법이 있다고 가정 해 보겠습니다. 그 방법의 시작 부분에서, 나는 얻을 대리인처럼 :앱 대표는 출시해야합니까?

// Get delegate 
MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 

내가 (나는 각각의 끝에서 [위임 해제]를 추가하는 생각 메소드의 끝에서 방출의 어떤 종류를 수행해야합니까 이 같은 메소드).

일반적으로 말해서이 메서드 내에서 만들어진 각 개체 변수 (NSString, NSData, ...)를 메서드의 끝에서 릴리스해야합니까?

덕분에 많이 뤽

답변

1

간단한 규칙 : 당신이 (이 경우 AppDelegate에) 개체에 대한 참조를 가지고 때 다음 개체에 alloc를 호출하지 않은 경우

당신은하지 않습니다 석방 필요. 제공된 코드 줄에서 alloc으로 전화하면 [delegate release];

+0

많은 것들을 명확히 해준 덕분에 :) – Luc

+0

중요한 부분 인'init'이 아니라'alloc'입니다. 메서드에 Copy, Alloc, Retain 또는 New가 포함되어있는 경우 CARN 규칙을 해제해야 할 가능성이 큽니다. – Jasarien

+0

내 대답을 init에서 alloc로 변경했습니다. 감사합니다 – jamone

1

번으로 전화를 걸 수 있습니다. 이것은 프로그램의 다른 부분에서 가장 많이 사용되는 대리인을 나타냅니다.

+0

괜찮아요, btw, 필요하지 않을 때 개체를 공개하는 데 문제가 발생할 수 있습니다? – Luc

+0

대리인을 풀어 주면 반드시 문제가 발생할 것입니다. 출시시기와하지 않을시기를 배우는 것은 가치가 있습니다. 필요한만큼 여러 번 해방하는 것이 중요합니다. –