Jihyeonnn
송지현
Jihyeonnn
전체 방문자
오늘
어제
  • Jihyeon Song (29)
    • C++ (0)
    • C (0)
    • Linux (0)
    • iOS (23)
    • JAVA (0)
    • Python (1)
    • GitHub (0)
    • 개인 프로젝트 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • ios
  • iOS 개발
  • 개발
  • optionalchaining
  • generic
  • 개발자
  • Mac사용법
  • iOS개발
  • Mac
  • 기초
  • IT
  • 파이썬 #python #개발 #기초
  • 스위프트
  • UI
  • 코딩
  • swift
  • array
  • 프로그래밍

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Jihyeonnn

송지현

Swift의 주요 문법 복습
iOS

Swift의 주요 문법 복습

2025. 3. 26. 16:26

Xcode에서 스토리보드로 새 프로젝트를 생성하였을 때 이와 같은 기본 파일들이 생성된다. 이 중에 swift 파일들을 자세히 알아보겠다.

 

AppDelegate.swift 파일의 내용이며, 각 주요 문법들에 주석을 달았다.

import UIKit  // UIKit 프레임워크를 가져옴. iOS 앱 개발에 필요한 기본 UI 및 앱 관리 기능 제공

@main  // 이 클래스가 앱의 진입점임을 나타냄. 앱 실행 시 가장 먼저 실행되는 클래스 지정
class AppDelegate: UIResponder, UIApplicationDelegate {  // AppDelegate 클래스 정의. UIResponder를 상속받아 이벤트 처리 가능, UIApplicationDelegate 프로토콜 채택으로 앱 생명주기 관리
        // 클래스는 앱의 전반적인 동작을 제어하는 역할을 함

        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {  
            // 앱이 실행된 직후 호출되는 메서드
            // 매개변수: application은 현재 앱 인스턴스, launchOptions는 앱이 실행된 이유(예: 알림 클릭 등)에 대한 옵션 딕셔너리
            // 반환값: Bool 타입으로, 앱 초기화 성공 여부 나타냄
            return true  // 초기화 성공 시 true 반환
        }

        // MARK: UISceneSession Lifecycle  // 코드 섹션을 구분하기 위한 주석 표시. Xcode에서 접기/펼치기 가능

        func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {  
            // 새로운 scene 세션이 생성될 때 호출되는 메서드
            // 매개변수: connectingSceneSession은 새로 연결될 scene 세션, options는 연결 옵션 정보
            // 반환값: UISceneConfiguration 객체로, 새 scene의 설정을 정의
            return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)  
            // 기본 설정 이름과 해당 scene의 역할을 사용해 UISceneConfiguration 객체 생성 후 반환
        }

        func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {  
            // 사용자가 scene 세션을 종료했을 때 호출되는 메서드
            // 매개변수: sceneSessions는 종료된 scene 세션들의 집합(Set)
            // 앱이 실행 중이지 않을 때 세션이 종료되면, 앱 시작 후 이 메서드가 호출됨
            // 종료된 scene과 관련된 리소스를 정리하는 데 사용
        }
    }

 

_ (언더스코어)의 역할을 자세히 설명한 것이다.

    // 새로운 scene 세션이 생성될 때 호출되는 메서드. 앱에서 다중 창(scene)을 지원하기 위한 설정을 제공
    func application(_ application: UIApplication,  // 함수 정의 시작. 'application' 매개변수의 외부 레이블을 '_'로 생략하여 호출 시 이름 없이 사용 가능
                     configurationForConnecting connectingSceneSession: UISceneSession,  // 'configurationForConnecting'는 외부 레이블, 'connectingSceneSession'는 내부 이름으로 사용
                     options: UIScene.ConnectionOptions) -> UISceneConfiguration {  // 'options'는 외부와 내부 이름이 동일하게 사용됨. 반환 타입은 UISceneConfiguration
        // '_'는 매개변수의 외부 레이블을 생략하라는 뜻. 즉, 이 메서드를 호출할 때 'application:' 같은 레이블 없이 바로 값만 전달 가능
        // 예: application(application, configurationForConnecting: session, options: options)
        // 언더스코어 사용 이유: Apple의 UIApplicationDelegate 프로토콜에서 첫 번째 매개변수는 보통 앱 인스턴스를 나타내며, 명시적 레이블이 필요 없는 관례적 설계임
        
        // 매개변수 설명:
        // - application: 현재 실행 중인 UIApplication 인스턴스. 앱의 전반적인 상태와 동작을 관리
        // - connectingSceneSession: 새로 연결될 UISceneSession 객체. 특정 창(scene)의 세션 정보를 담음
        // - options: UIScene.ConnectionOptions 타입으로, scene 연결 시 추가적인 컨텍스트나 설정 제공
        
        return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)  
        // UISceneConfiguration 객체를 생성해 반환. 'name'은 설정 이름, 'sessionRole'은 해당 scene의 역할(예: foreground, background 등)을 지정
        // 이 메서드는 새 scene의 초기 설정을 정의하는 데 사용됨
    }

 

이는 문법 중 상속에 대한 요소들이다.

    // AppDelegate 클래스는 UIResponder의 자식 클래스이며, UIApplicationDelegate 프로토콜을 채택
    class AppDelegate: UIResponder, UIApplicationDelegate {  // 클래스 선언. 상속과 프로토콜 채택을 동시에 사용
        // 'UIResponder'는 부모 클래스(parent class 또는 superclass)로, AppDelegate는 이를 상속받아 자식 클래스(subclass)가 됨
        // 'UIApplicationDelegate'는 프로토콜로, 상속과는 별개로 AppDelegate가 따라야 할 규칙(메서드 구현)을 정의

        // 자식 클래스(subclass)란?
        // - 부모 클래스(UIResponder)의 속성과 메서드를 물려받아 사용 가능
        // - 필요 시 부모 클래스의 기능을 확장(override)하거나 새로운 기능을 추가할 수 있음
        // - 예: UIResponder가 제공하는 이벤트 처리 메서드(touchesBegan 등)를 AppDelegate에서 재정의 가능

        // 상속의 의미:
        // - AppDelegate는 UIResponder의 모든 기본 기능을 상속받음
        // - 즉, 터치나 모션 같은 사용자 이벤트를 처리할 수 있는 능력을 물려받은 상태
    }

 

함수를 정의하는 기본적인 방법이다.

** 함수명은 매개변수명까지도 포함이기 때문에 add라는 함수가 여러 개 있어도 매개변수가 다르면 각각 다른 함수가 된다. **

func add(x:Int, y:Int) -> Int { //(매개변수,매개변수) -> 리턴할 자료형
    return x+y
}

func add(_:Int, with:Int) -> Int { 
    return x+y
}

print(add(x:10,y:20))

var x = 10
print(type(of: x))

 

Class 선언

class Man {
    var age : Int = 1
    var weight : Double = 3.5
    //init(){} //클래스를 만들면 컴파일러가 자동으로 init() 메소드를 만들어 준다.
    func display(){
        print("나이=\(age), 몸무게=\(weight)")
    }
    
    init(age: Int, weight: Double){
        self.age = age
        self.weight = weight
    } //designated initializer 지정 초기화기. 이렇게 직접 만들 수도 있다.
}

var song = Man(age:20, weight:35.5)
song.display()

 

상속

class Student:  Man {
    
}

var kim : Student = Student(age: 25, weight: 35.2) //Man을 상속 받았기 때문에 꼭 이와 같은 형태로 입력
print(kim.age)
class Student:  Man {
    var name: String
    func displayS(){
        print("이름=\(name), 나이=\(age), 몸무게=\(weight)")
    }
    
    //override func display(){ //만약 함수 이름을 똑같이 하고 싶다면 override해야 한다.
    //    print("이름=\(name), 나이=\(age), 몸무게=\(weight)")
    //} 
    
    init(age: Int, weight: Double, name: String){
        self.name = name //line 9와 바꿔 작성하면 오류 발생. 자식 클래스의 프로퍼티부터 초기화해야 한다.
        super.init(age: age, weight: weight)
    }
}

var hong : Student = Student(age: 25, weight: 35.2, name: "홍길동")
hong.displayS()

 

 

 

'iOS' 카테고리의 다른 글

Swift - TableView  (0) 2025.04.02
Swift - 프로토콜  (0) 2025.03.26
Swift로 전광판 만들기  (0) 2025.03.19
Swift로 무드등 만들기  (0) 2025.03.19
Swift 문법 정리  (0) 2025.03.18
    'iOS' 카테고리의 다른 글
    • Swift - TableView
    • Swift - 프로토콜
    • Swift로 전광판 만들기
    • Swift로 무드등 만들기
    Jihyeonnn
    Jihyeonnn

    티스토리툴바