아이폰 개발 팁(삼항연산자, 메모리관리)

팁1. 삼항 연산자

A?B:C 의 형태로 사용하는 삼항연산자는 Objective-C 에서도 동일하다. A?B:C 형태로 사용하며 A가 참이면 B, 그렇지 않으면 C가 리턴이 된다.

 

팁2. 메모리 관리, 단 두가지만 기억하면 됩니다. — HeadFirst iPhone Development 에서 발췌

메모리 관리는 큰 앱일 경우 상당히 골치 아픈 문제가 될 수 있습니다. 그래서 애플은 다음과 같은 두 가지 규칙을 정해서, 누가 언제 릴리즈 및 리테인에 대해 책임지는지 체계적으로 안내하고 있습니다.

1. 여러분이 alloc, new, copy, 또는 mutableCopy 메소드로 다른 객체르 생성했다면, 여러분이 release 해야 합니다.

– 여러분이 alloc, new, copy, 또는 mutableCopy 메소드로 다른 객체를 생성했다면, 그 개체는 리테인 카운트가 1이 되며, 그 객체를 더 사용하지 않으면 여러분이 직접 release 해야 합니다. release 메시지를 나중에 보내고 싶다면, 그 객체를 오토릴리즈 풀(autorelease pool)에 직접 넣을 수도 있습니다.

2. 그렇지 않은 경우라면, 객체가 이미 오토릴리즈 풀에 들어있고, 리테인 카운트는 1이라고 생각하십시오.

1번과 다른 방법으로 객체를 얻었다면(스트링 포메터, 배열초기화 등), 그 객체는 오토릴리즈 풀에 이미 들어있고 리테인 카운트는 1이라고 생각하십시오.(현재 메소드의 처리가 끝나면 그 객체는 없어져 버릴 수도 있다는 의미입니다.) 다시 말하면, 현재 메소드의 처리가 끝나고 나서도 계속 그 객체를 사용하고자 하는 경우에는 꼭 리테인을 해야 한다는 의미입니다.(리테인한 경우에는 꼭 릴리즈 해 주어야 합니다.)

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s