평범한 컴공 대학생의 공부일지

iOS Swift 문법 간단 복습 본문

iOS Swift

iOS Swift 문법 간단 복습

Taram 2024. 4. 5. 11:27

※이 iOS 카테고리의 글 들은 학교 강의와 과제를 기반으로 작성한 것입니다.※


이번 포스트에서는 몇가지 문법을 복습해보겠습니다.

  • Function 리터럴, Default 매개변수
    - Function 리터럴
      보다 일반적으로 알려진 클로저(Closure)는 독립적인 코드 블록입니다. 이를 사용하여 함수를 변수에 할당하거나 다른 함수의 인자로 전달할 수 있습니다. 그로인해 코드의 재사용성과 유연성이 높아지는 효과를 가지고 있습니다.
    { (매개변수들) -> 반환 타입 in
        실행 코드
    }
    
    let greet = { (name: String) -> String in
        return "Hello, \(name)!"
    }
    print(greet("World"))  // "Hello, World!" 출력​
     
     - Default Parameters
      매개변수에 기본값을 지정하여 함수를 호출할 때 해당 매개변수를 생략할 수 있습니다. 그로 인해 코드를 더 간결하게 만들어 가독성이 높아지는 효과가 있습니다.
    func 함수명(매개변수명: 타입 = 기본값) -> 반환타입 {
        실행 코드
    }
    
    //greeting의 Default Parameter로 Hello를 지정
    func greet(name: String, greeting: String = "Hello") -> String {
        return "\(greeting), \(name)!"
    }
    print(greet(name: "World"))  // "Hello, World!" 출력
    print(greet(name: "World", greeting: "Hi"))  // "Hi, World!" 출력
  • Class
    Class의 기본 구조
    Property의 조건 3가지
    -> 초기값이 있어야 한다.
    -> init을 이용해서 초기화한다
    -> Optional 변수로 선언한다(자동으로 nil 초기화)


  • Optional(옵셔널)에서 !와 ?의 차이점
    Int!와 Int?로 예를 들어 설명 해보겠습니다.
    Optional은 값이 '있을 수도 있고 없을 수도 있음'을 나타내는 기능입니다. 즉, 옵셔널 타입은 값이 '있거나'(Some) '없을 수 있음'(None 혹은 nil)을 나타냅니다.
    하지만 Int!와 Int? 사이에는 중요한 차이점이 있습니다. 변수가 nil 값을 가질 수 있는지를 명시적으로 표시하며 이를 통해 코드의 안전성을 높이고, nil 값에 대한 예기치 않은 접근으로 인한 오류를 방지할 수 있다는 장점이 있습니다.
    추가적으로 nil 상태의 값을 !로 풀어버리게 되면 Crush가 일어나 앱이 다운될 수 있으니 주의 해야 합니다.
    - 특징                                 Int! (암시적 추출 옵셔널)                                                 Int? (옵셔널)
    정의 값이 있거나 nil일 수 있지만, 사용 시 옵셔널을 자동으로 추출한다. 값이 있거나 nil일 수 있으며, 값에 접근하기 위해서는 명시적으로 추출해야 한다.
    사용 시점 변수나 상수가 선언된 이후에는 nil이 아니라고 확신할 때 사용. 실제로 nil이라면 런타임 오류 발생. 값의 존재 여부가 확실치 않을 때 사용. 값에 접근하기 전에 nil 체크가 필요.
    안전성 덜 안전. nil 접근 시 런타임 오류를 일으킬 수 있음. 더 안전. nil 체크나 옵셔널 바인딩을 통해 안전하게 값을 처리할 수 있음.
    사용 예시 클래스의 초기화가 완료된 후에는 항상 값이 있다고 가정할 때. 예: IBOutlet 연결 값의 존재 여부가 불확실할 때. 예: 딕셔너리에서 키로 값을 조회할 때
    추출 방법 자동으로 추출되므로 별도의 처리가 필요 없음. 그러나 수동으로도 추출할 수 있음. if let, guard let, ! 등을 사용하여 명시적으로 추출해야 함.

웹 백엔드 작업으로 인해 Swift에 신경을 쓰지 못하다보니 기본적인 문법이 조금씩 헷갈렸습니다. 여러분들도 초석을 만들면 꼭 다져놓고 두들겨보는 습관을 들이시는걸 추천합니다..!!