✅ 문제: "Hello, Swift!"를 출력하는 함수를 선언하고 호출하세요.
func hello() {
print("Hello, Swift!")
}
hello() // Hello, Swift! 출력
✅ 문제: 이름을 입력하면 "안녕하세요, [이름]님!"을 출력하는 함수를 작성하세요.
greetname(문자열)Void)func greet(name: String) {
print("안녕하세요, \(name)님!")
}
greet(name: "Bambu") // 안녕하세요, Bambu님! 출력
| 상태 | 설명 |
|---|---|
| Not Running | 앱이 실행되지 않은 상태 |
| Inactive | 실행 중이지만 사용자 입력을 받지 않는 상태 |
| Active | 실행 중이며 사용자 입력을 받을 수 있는 상태 |
| Background | 백그라운드에서 실행되는 상태 |
| Suspended | 백그라운드에 있지만 실행이 멈춘 상태 |
스토리보드 : 코드 기반, 스토리보드(UI) 기반 모두 가능
→ 장점: 세세한 부분까지 컨트롤 가능
→ 단점: 보드가 많아질 경우 로딩 시간 길어짐
Swiftui : 코드 기반
→ 장점: 여러 기능 제공으로 UI 구현이 간편
→ 단점: 세세한 부분까지 설정하기 어려움
func add(_ observer: NSObject, for keyPath: String) // 선언 시점에는 파라미터 역할 명확
grid.add(self, for: graphics) // 호출 시 for이 의미하는 바가 모호함
func addObserver(_ observer: NSObject, forKeyPath path: String)
grid.addObserver(self, forKeyPath: graphics) // 매개변수 이름을 forKeyPath로 하면서 해당 매개변수가 keyPath로 쓰일 것을 알 수 있음
공장 메소드(factory methods)
객체 지향 프로그래밍에서 공장 메소드 패턴은 클래스를 특정하지 않고 객체를 만드는 패턴이다.
공장 메소드 자체는 추상화하여 인터페이스에 선언되고, 서브클래스에 의해 객체의 구체적인 클래스 타입이 결정된다.
참고: [Design Pattern] Factory Method
// 옳은 예시
let foreground = Color(red: 32, green: 64, blue: 128)
let newPart = factory.makeWidget(gears: 42, spindles: 14)
// 잘못된 예시
let foreground = Color(havingRGBValuesRed: 32, green: 64, and Blue: 128)
let newPart = factory.makeWidget(havingGearCount: 42, andSpindleCount: 14)
// - 아규먼트 이름들이 기본 이름(Color, .makeWidget)과 이어지고 있음
명사형으로 짓기x.distance(to: y)동사형으로 짓기print(x), x.sort()Boolean 메소드와 프로퍼티는 리시버(receiver)에 관한 주장문으로 작성x.isEmpty, line1.intersects(line2)CollectionEquatable, ProgressReporting자유 함수(Free Function
클래스나 구조체 밖에 독립적으로 정의된 함수
UpperCamelCase)lowerCamelCase)x.removeBoxes(havingLength: 12)// 틀린 예시
a.move(toX: b, y: c)
a.fade(fromRed: b, green: c, blue: d)
// 올바른 예시 - 함수 이름에 전치사를 포함
a.moveTo(x: b, y: c)
a.fadeFrom(red: b, green: c, blue: d)
첫 번째 아규먼트가 문법적으로 완벽할 때, 라벨을 생략 - x.addSubview(y)
나머지 모든 아규먼트에 라벨 지정