iOs 6th Class
- native
- android
- Java, Kotlin
- iOS
- Swift, Objective-C
- android
- cross platform
- react native
- Flutter
- hybrid
- web view
- HCJ
- apache cordova
- 클래스는 구조체에 없는 추가적인 기능이 있음
- 상속
- 프로퍼티는 클래스 내에 포함되는 변수와 상수
- 기본적으로 stored property를 말함
가장 일반적으로 프로퍼티에 초기값을 주는 방법은 init()이다.
class Man{
var age : Int = 1
var weight : Double = 3.5
//init(){}
//눈에 보이지 않지만 자동으로 만들어지는 default initializer
func display(){
print("나이=\(age), 몸무게=\(weight)")
}
}
var kim : Man = Man() // ()는 init()호출하는 것
kim.display() //인스턴스 메서드는 인스턴스가 호출
print(kim.age)
- :Man 생략 가능
- Man() == Man.init()

P : property
M : method
class 키워드로 만든 클래스 매서드는 자식 클래스에서 override가능
현재 클래스 내 메서드나 프로퍼티를 사용하는 경우 self를 사용한다
- designated initializer
- 모든 프로퍼티(age, weight)를 다 초기화시키는 생성자
method overloading은 동일한 이름을 가진 매서드를 2개 만들어 매개변수에 따라 골라서 작동시킬 수 있는 기능이다.
failable initializer = 실패 가능한 생성자 = init?()

정상적으로 만들어 진 경우에도 옵셔널 형으로 생성됨

올바르게 옵셔널 형을 분해해서 쓸것
if let kim2 = Man(age:0, weight:5.5) {
kim2.display()
}
이처럼 초기화와 함께 사용할 수 도 있다
var kim : Man? = Man(age:1, weight:3.5)
//1-1.옵셔널 형으로 선언
if let kim1 = kim { //1-2.옵셔널 바인딩
kim1.display()
}
//2.인스턴스 생성과 동시에 옵셔널 바인딩
if let kim2 = Man(age:2, weight:5.5) {
kim2.display()
}
//3.인스턴스 생성하면서 바로 강제 언래핑
var kim3 : Man = Man(age:3, weight:7.5)!
kim3.display()
//4.옵셔널 인스턴스를 사용시 강제 언래핑
var kim4 : Man? = Man(age:4, weight:10.5)
kim4!.display()
class 자식 : 부모, 프로토콜1, 프로토콜2... {}
자식이 init할때는 자기 자신의 변수 먼저 초기화 후 super.init을 사용한다.
override를 자식에서 함수를 선언할때 쓰면 부모보다 우선으로 자식에서 정의한 함수를 사용하게 한다.
결론
import UIKit
class ViewController: UIViewController {
@IBOutlet var lblHello: UILabel!
@IBOutlet var txtName: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func btnSend(_ sender: UIButton) {
lblHello.text = "Hello, " + txtName.text!
}
}
import UIKit
- UIKit 프레임워크를 임포트.
- iOS에서 UI를 구성하기 위해 필수.
UIViewController
,UILabel
,UITextField
,UIButton
등 UI 구성 요소들을 사용할 수 있게 해줌.
class ViewController: UIViewController
- ViewController 클래스 정의
UIViewController
를 상속받아서, 화면(View)의 생명주기와 이벤트를 처리함.- 이 클래스는 화면 1개의 로직을 담당.
@IBOutlet var lblHello: UILabel!
- Interface Builder(스토리보드)에서 UILabel과 연결되는 변수(아울렛).
@IBOutlet
은 "이 변수는 스토리보드에서 연결된 UI 요소입니다" 라는 뜻.UILabel!
: 옵셔널이지만 강제 언래핑됨 → 나중에 연결 안 되면 앱이 죽을 수 있음.
@IBOutlet var txtName: UITextField!
- 입력 필드(사용자가 이름을 입력하는 곳)도 동일하게 연결.
- 역시 Interface Builder와 연결된 아울렛.
override func viewDidLoad()
- 뷰 컨트롤러가 메모리에 로드된 직후 자동 호출되는 메서드.
- 초기 설정이나 데이터를 불러오는 데 사용.
- 여기선 별 내용이 없지만, 필수적으로 override됨.
override func viewDidLoad
() { super.viewDidLoad() // 반드시 호출해야 부모의 로직이 정상 실행됨
}
@IBAction func btnSend(_ sender: UIButton)
- Interface Builder에서 버튼 클릭 이벤트와 연결되는 함수(액션).
- 사용자가 버튼을 눌렀을 때 호출됨.
_ sender: UIButton
→ 어떤 버튼이 눌렸는지 정보를 담고 있음 (여기선 사용 안 함)
lblHello.text = "Hello, " + txtName.text!
txtName.text!
: 사용자가 입력한 텍스트 (강제 언래핑)lblHello.text
: 라벨에 표시될 텍스트로 설정됨- 결과적으로 "Hello, [입력한 이름]" 이 화면에 출력됨