230520 Today I Learned


super 키워드의 역할

iOS에서 ‘super’ 키워드는 부모 클래스의 메서드, 프로퍼티 및 초기화를 호출하고 부모 클래스에 대한 접근을 제공하는 역할을 합니다.

  1. 부모 클래스의 메서드 호출

    super’를 사용하여 부모 클래스의 메서드를 호출할 수 있습니다.

    이는 자식 클래스에서부모 클래스의 동작을 재사용하거나 확장할 때 유용합니다.

    예를 들어, 부모 클래스에 구현된 메서드를 호출하고, 추가적인 로직을 수행하거나 결과를 조작하는 등의 작업을 할 수 있습니다.

    class ParentClass {
    	func someMethod() {
    		// 부모 클래스의 메서드 구현
    	}
    }
    
    class ChildClass: ParentClass {
    	override func someMethod() {
    		super.someMethod() // 부모 클래스의 메서드 호출
    		// 추가적인 로직 수행
    	}
    }
    
  2. 부모 클래스의 프로퍼티 접근

    super’를 사용하여 부모 클래스의 프로퍼티에 접근할 수 있습니다.

    자식 클래스에서 부모 클래스의 프로퍼티를 읽거나 쓰는 작업을 할 때 사용합니다.

    class ParentClass {
    	var someProperty: Int = 0
    }
    
    class ChildClass: ParentClass {
    	override init() {
    		super.init()
    		super.someProperty = 10 // 부모 클래스의 프로퍼티에 접근 및 수정
    	}
    }
    
  3. 부모 클래스의 초기화 호출

    초기화 과정에서 ‘super’를 사용하여 부모 클래스의 초기화 메서드를 호출해야 합니다.

    이를 통해 상속 계층 구조에서 초기화가 올바르게 이루어집니다.

    class ParentClass {
    	init() {
    		// 부모 클래스의 초기화 작업
    	}
    }
    
    class ChildClass: ParentClass {
    	override init() {
    		super.init() // 부모 클래스의 초기화 호출
    			// 자식 클래스의 초기화 작업
    	}
    }
    

    위의 예시에서 ‘super’ 키워드는 부모 클래스와 자식 클래스 간에 관계를 형성하고 상호작용할 수 있도록 도와줍니다.

    부모 클래스의 메서드, 프로퍼티, 초기화에 접근하여 코드의 재사용성과 확장성을 높이는 데 사용됩니다.


super.loadView()를 사용하면 안되는 이유.

iOS의 ‘loadView()’ 메서드에서 ‘super.loadView()’를 호출해서는 안 되는 이유는 ‘loadView()’ 메서드가 뷰 컨트롤러의 뷰를 생성하고 설정하는 역할을 수행하기 때문입니다.

loadView()’ 메서드는 UIVIewController 클래스의 메서드로, 해당 뷰 컨트롤러의 뷰를 생성하고 초기화하는 역할을 합니다.

기본적으로 ‘loadView()’ 메서드는 뷰를 생성하여 ‘view’ 프로퍼티에 할당합니다.

만약 ‘super.loadView()’를 호출하면 부모 클래스인 UIVIewController의 ‘loadView()’ 메서드가 실행되어 기본 동작인 빈 뷰를 생성하고 ‘view’ 프로퍼티에 할당합니다.

일반적으로 뷰 컨트롤러에서 ‘loadView()’ 메서드를 오버라이드하여 직접 커스텀 뷰를 생성하고 설정하거나, 스토리보드 또는 nib 파일과 연결된 뷰를 로드하고 설정하는 작업을 수행합니다.