반응형
비교 인스턴스
label1
은 선언과 동시에 초기화label2
은 선언과 초기화를 분리하고 viewDidLoad 에서 초기화
설명
- 프로그래밍 방식의 UI 생성을 연습하기 위해 작성한다면 아래와 같은 코드는 큰 차이점이 없습니다.
- 하지만 뷰 컨트롤러의 인스턴스만 생성한 후 화면으로 이동하지 않는다면
label1
인스턴스는 메모리만 차지하게 됩니다. 반면,label2
인스턴스는 뷰 컨트롤러가 화면에 표시될 때 인스턴스가 생성되므로 메모리를 미리 차지하지 않습니다. - 즉, 특별한 경우를 제외하고 클래스 내에 멤버 변수로 인스턴스를 사용한다면
label2
처럼 사용하기 직전에 인스턴스를 생성하여 메모리를 할당 받는 것이 메모리를 효율적으로 사용할 수 있습니다.
코드
#import UIKit
class CustomViewController: UIViewController {
var label1 = UILabel()
var label2: UILabel!
override func viewDidLoad() {
self.label1.frame = CGRect(x: 10, y: 50, width: 100, height: 30)
self.label2 = UILabel()
self.label2.frame = CGRect(x: 10, y: 100, width: 100, height: 30)
self.view.addSubview(label1)
self.view.addSubview(label2)
}
}
참고
반응형
'Swift' 카테고리의 다른 글
@IBDesignable , @IBInspectable in Custom Object (0) | 2018.11.11 |
---|---|
sizeToFit 함수와 center 속성을 함께 사용하는 경우에 작성 순서 (0) | 2018.11.11 |
Swift 코드 작성시 변수와 함수 순서 (0) | 2018.11.04 |
프로토타입 셀 제어 (0) | 2018.11.04 |
이미지 사용 용도에 따른 UIImage 생성자 선택 (0) | 2018.11.04 |