지난 학기 복습 개념
func application(_ application: UIApplication,)
_ 는 외부 매개변수 생략
- 매개변수: application이라는 UIApplication 타입의 매개변수를 받습니다. 이는 앱의 공유 인스턴스에 대한 참조입니다4.
- 호출 시점: 이 메서드는 앱이 처음 시작될 때 UIKit에 의해 자동으로 호출됩니다1.
- 용도: 앱의 초기 설정을 수행하는 데 사용됩니다. 예를 들어, 앱의 주요 데이터 구조를 초기화하거나, 필요한 서비스를 등록하는 등의 작업을 수행할 수 있습니다4.
- 반환 값: 일반적으로 Bool 타입을 반환합니다. 앱이 성공적으로 시작되었는지를 나타냅니다1.
- 생명주기 관리: iOS 13 이전에는 이 메서드에서 앱의 전체 생명주기를 관리했지만, iOS 13부터는 일부 기능이 SceneDelegate로 이동했습니다6.
_ 의 사용 목적
- 매개변수 이름 생략: _를 사용하면 메서드를 호출할 때 해당 매개변수의 이름을 명시적으로 쓰지 않아도 됩니다.
- 가독성과 간결성: 일부 경우에 매개변수 이름이 불필요하게 반복적이거나 문맥상 명확할 때 _를 사용하여 코드를 더 간결하게 만들 수 있습니다.
- Apple의 컨벤션: application(_:didFinishLaunchingWithOptions:) 같은 UIKit의 델리게이트 메서드에서 Apple은 종종 첫 번째 매개변수에 _를 사용합니다. 이는 UIApplication 인스턴스가 항상 앱의 shared 인스턴스를 참조한다는 것이 명확하기 때문입니다.
configurationForConnecting connectingSceneSession
앞의 configurationForConnecting는 외부매개변수 connectingSceneSession는 내부매개변수
- 역할: configurationForConnecting은 메서드이며, connectingSceneSession은 해당 메서드의 매개변수입니다.
- 목적: configurationForConnecting은 Scene 구성을 결정하는 반면, connectingSceneSession은 생성될 Scene에 대한 정보를 제공합니다.
- 사용: 개발자는 configurationForConnecting 메서드를 구현하여 Scene 구성을 커스터마이즈할 수 있지만, connectingSceneSession은 시스템에 의해 제공되는 정보입니다3.



함수의 자료형이라는 것은 매개변수의 자료들을 ,을 통해 나누고 화살표를 통해 리턴값의 자료형까지 나타낸다.
(Int, Int) -> Int


func add(x:Int,y:Int)->Int {
print(#function)
return x+y
}
add(x: 10,y: 20);
func add(first x:Int,second y:Int) -> Int {
print(#function)
return x+y
}
add(first: 10,second: 20);
func add(_ x:Int,_ y:Int) -> Int {
print(#function)
return x+y
}
add(10,20);
func add(_ x:Int,with y:Int) -> Int {
print(#function)
return x+y
}
add(10,with: 20);

# Swift 함수명 :
함수명(외부매개변수명 : 내부매개변수명 ...)
: 의 갯수가 매개변수 갯수
class 선언
class Man {
var age : Int
}

class Man {
var age : Int = 1
var weight : Double = 3.5
func display(){
print("나이=\(age), 몸무게=\(weight)")
}
}
var kang = Man() // kang는 인스턴스 Man은 클래스
kang.display()
클래스 메서드는 class나 static이 앞에 붙는다.
class Man {
var age : Int = 1
var weight : Double = 3.5
func display(){
print("나이=\(age), 몸무게=\(weight)")
}
init(yourAge: Int, yourWeight : Double){ // 이 문장으로 인해 밑의 Man 클래스가 값이 없으면 실행X
age = yourAge
weight = yourWeight
} //designated initializer
}
var kang = Man(yourAge: 10, yourWeight: 30.5) // 그냥 실행 안됨 값이 들어가야한다
kang.display()
designated initializer : 모든 프로퍼티(age, weight)를 다 초기화시키는 생성자
class Man {
var age : Int = 1
var weight : Double = 3.5
func display(){
print("나이=\(age), 몸무게=\(weight)")
}
init(age: Int, weight : Double){
self.age = age
self.weight = weight
} //designated initializer
}
// -----------------클래스 정의
var kang = Man(age: 10, weight: 30.5)
kang.display()
// ------ 인스턴스 생성 및 사용
self : 현재 클래스 내 메서드나 프로퍼티를 가리킬 때 메서드나 프로퍼티 앞에 self.을 붙임

protocol : 특정 클래스와 관련없는 함수(메서드)들의 선언 집합



protocol Runnable { //대리하고 싶은 함수 목록 작성
var x : Int {get set} //읽기와 쓰기 가능 프로퍼티,{get}은 읽기 전용
//property in protocol must have explicit { get } or { get set } specifier
func run() //메서드는 선언만 있음
}
class Man : Runnable { //채택, adopt
var x : Int = 1 //준수, conform
func run(){print("달린다~")} //준수, conform
}
var kim = Man()
kim.run()
'IOS앱개발' 카테고리의 다른 글
iOS 프로그래밍 6주차 (0) | 2025.04.10 |
---|---|
iOS 5주차 0403 (0) | 2025.04.03 |
iOS 3주차 0320 (0) | 2025.03.20 |
iOS 프로그래밍 2주차 0317 (0) | 2025.03.19 |
다시 1주차 (0) | 2025.03.06 |