본문 바로가기
공부/iOS

iOS 프로그래밍 7주차

by Electrohyun 2025. 10. 14.

앱 개발 기술: native, cross platform (출처: Smile Han의 iOS 프로그래밍)

 

as로 Upcasting / Downcasting (출처: Smile Han의 iOS 프로그래밍)


 

struct vs class (출처: Smile Han의 iOS 프로그래밍)

 

클래스는 구조체에 없는 추가적인 기능이 있다

-> 상속!

 

Swift의 클래스 선언 (출처: Smile Han의 iOS 프로그래밍)

 

- 일반적으로 프로퍼티를 지칭하면 stored property를 지칭한다.

 

stored property에 초기값을 주는 3가지 방법

 

- 스토어드 프로퍼티는 반드시 초기값이 있어야 하는데, 3가지 방법 중 3번이 가장 일반적.

 

var kim : Man = Man()에서, 콜론 Man은 생략할 수 있다

 

- init() {}은 주석 붙여도 붙이지 않아도 괜찮고, 애초에 자동으로 만들어진다.

-> 이것 때문에 10번째 줄 맨 뒤에 () 붙여주는 것임

 

- 12번째 줄에서 어떻게 멤버 변수에 접근하지?

-> 약한 캡슐화

 

자동완성 훔쳐보기

 

- P: Property

- M: Method

 

- 클래스 메서드(타입 메서드) 혹은 Static 메서드는 객체가 아닌 클래스 차원에서 접근해야 한다.

 

(신기하다)

+ class 키워드로 만든 클래스 메서드는 자식 클래스에서 override 가능함

 

self 문법 (출처: Smile Han의 iOS 프로그래밍)
self vs this
init() (출처: Smile Han의 iOS 프로그래밍)

 

- designated initializer: 전부 다 초기화 하는 생성자

 

method overloading(생성자 중첩) (출처: Smile Han의 iOS 프로그래밍)

 

- Failable Initializer를 거친 경우, Optional 객체로 만들어진다!

 

Failable Initilalize가 있는 클래스의 인스턴스 생성 (출처: Smile Han의 iOS 프로그래밍)

- 강제 Unwrapping의 경우 편리하지만 Crush가 발생할 위험이 있다.

- Optional Binding을 사용해서 안전하게 푸는 걸 권장

이렇게

 

이렇게 다양한 방법

 

Swift 상속(Inheritance) (출처: Smile Han의 iOS 프로그래밍)

 

주의

- 반드시 자식의 프로퍼티를 먼저 초기화 해야한다.

 

과제) 아래 코드의 실행결과 올리기

 

import UIKit
class ViewController: UIViewController {
    @IBOutlet var lblHello: UILabel!
    @IBOutlet var txtName: UITextField!
    //Interface Builder Outlet(변수, 프로퍼티)
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    @IBAction func btnSend(_ sender: UIButton) {
        //Interface Builder Action(함수, 메서드)
        lblHello.text = "Hello, " + txtName.text!
    }
}

 

 

'공부 > iOS' 카테고리의 다른 글

iOS 프로그래밍 10주차  (0) 2025.11.04
iOS 프로그래밍 9주차  (0) 2025.10.28
iOS 프로그래밍 5주차  (0) 2025.09.30
iOS 프로그래밍 4주차  (0) 2025.09.23
iOS 프로그래밍 3주차  (0) 2025.09.16