스토리보드를 이용해서 뷰의 아웃렛을 작성할 때 다음 그림처럼 Storage 속성에서 Strong과 Weak 중 하나를 선택해야 한다.
Strong은 객체를 소유해서 레퍼런스 카운트가 증가하는 프로퍼티고 Weak은 객체를 소유하지 않는 포인터다.
Swift 에서는 다음과 같이 생성된다.
@IBOutlet var strongView: MyView!
@IBOutlet weak var weakView: MyView!
오브젝티브 씨에서는 다음과 같이 생성된다.
@property (strong, nonatomic) IBOutlet MyView *strongView;
@property (weak, nonatomic) IBOutlet MyView *weakView;
Strong으로 선택하면, 뷰 컨트롤러에 작성한 프로퍼티가 뷰를 소유하고 있으므로, 뷰를 removeFromSuperview 메소드로 씬에서 삭제해도 메모리에서 해제되지 않는다. 이에 비해서 Weak로 생성한 아웃렛 프로퍼티는 뷰를 소유하지 않으므로, 뷰를 삭제하면 메모리에서 해제된다.
strongView.removeFromSuperview() // 메모리에서 해제 안됨
weakView.removeFromSuperview() // 메모리에서 해제
== 샘플 코드
간단하게 Strong과 Weak 로 아웃렛을 연결하고, 클래스의 deinit 메소드를 이용해서 메모리에서 해제될 때 콘솔에 출력하도록 작성했다.
== Tip
뷰를 씬에 삭제했다가 다시 추가해야 하는 상황이라면 Strong 으로 작성하고, 그 외에는 Weak로 작성한다.
'code snippet' 카테고리의 다른 글
[iOS] 노티 옵저버 등록과 해제 (0) | 2015.03.13 |
---|---|
[Node.js] 서버 IP 얻기 (0) | 2015.03.05 |
[Swift] 문자열 자르기 - substring (0) | 2014.08.10 |
[Swift] 파일 접근하기 (0) | 2014.08.03 |
[SWIFT] JSON 파싱 예제 코드 (0) | 2014.07.22 |