목록Swift/Swift 기초문법 (75)
HIT해
Swift에서 Struct와 Class의 차이를 이전 포스팅에서 알아보았다.Class의 경우 메모리 주소값을 가리키기 때문애 복사한 개체 혹은 클래스 내부 함수를 통해 변수값의 변경이 쉽게 가능하지만Struct는 그렇지 않다.그래서 Struct내부에 정의된 함수가 멤버변수를 바꾸려고 하면 오류가 발생한다아래의 코드를 한번 보자!import UIKitstruct myFriend { var name : String var age : Int func changeAge(newAge : Int){ self.age = newAge }}var JH = myFriend(name: "지혁", age: 25)JH.changeAge(newAge: 26) 실행결과 에러가 발생하는 것을..
Swift에서 Error 프로토콜은 오류 처리를 위한 표준 인터페이스를 제공한다. Swift의 오류 처리 모델은 명확하고 안전하게 오류를 처리할 수 있도록 설계되어 있다. 이번 포스팅에서는 Swift의 Error 프로토콜, 오류 처리 방법, 그리고 커스텀 오류 타입을 만드는 방법에 대해 알아보겠다.Swift의 Error 프로토콜Swift에서는 오류를 나타내기 위해 Error 프로토콜을 사용한다. 이 프로토콜은 빈 프로토콜로, 특별한 요구사항이 없다. 즉, Error 프로토콜을 채택하기만 하면 어떤 타입이든지 오류로 사용할 수 있다.enum NetworkError: Error { case badURL case requestFailed case unknown}위 예제에서 NetworkErro..
Swift에서 inout 키워드는 함수의 매개변수에 사용되어 함수 내부에서 매개변수의 값을 변경할 수 있게 해준다. 기본적으로 Swift의 함수 매개변수는 값 타입으로 전달되기 때문에 함수 내부에서 매개변수의 값을 변경해도 함수 호출자에게는 반영되지 않는다. inout 키워드를 사용하면 이 제한을 극복할 수 있다.inout 키워드 사용 예제다음은 inout 키워드를 사용하는 간단한 예제이다.func swapValues(_ a: inout Int, _ b: inout Int) { let temp = a a = b b = temp}var x = 10var y = 20swapValues(&x, &y)print("x: \\(x), y: \\(y)")// x: 20, y: 10위 예제에서 swap..
Swift에서 final 키워드는 클래스, 메서드, 그리고 속성에 적용될 수 있는 중요한 키워드다. final 키워드를 사용하면 해당 클래스나 메서드, 속성을 더 이상 상속하거나 재정의할 수 없게 만든다.final 클래스final 클래스를 선언하면 이 클래스를 상속받는 다른 클래스를 만들 수 없다. 이는 주로 클래스의 동작을 고정하고, 무분별한 상속을 방지하며, 코드의 안전성을 높이기 위해 사용된다.final class Animal { var name: String init(name: String) { self.name = name } func sound() { print("동물이 소리를 냅니다.") }}// 아래 코드는 컴파일 오류를 발생시킵니다.//..
Swift에서 딕셔너리(Dictionary)는 키와 값의 쌍으로 데이터를 저장하는 컬렉션 타입이다.딕셔너리는 순서가 없으며, 각 키는 고유해야 한다. 키를 통해 빠르게 값을 검색할 수 있어 매우 유용하다!딕셔너리 생성딕셔너리는 여러 가지 방법으로 생성할 수 있다. 가장 기본적인 방법은 대괄호 []를 사용하여 키-값 쌍을 정의하는 것이다.var emptyDict: [String: Int] = [:] // 빈 딕셔너리var scores: [String: Int] = ["Alice": 90, "Bob": 85, "Charlie": 95] // 초기값 설정 타입 추론을 통해 타입을 생략할 수도 있다.var scores = ["Alice": 90, "Bob": 85, "Charlie": 95]딕셔너리 접근 및 수..
Swift에서 상속은 클래스가 다른 클래스의 특성과 동작을 물려받는 것을 의미한다. 상속을 통해 코드 재사용성을 높이고, 객체 지향 프로그래밍의 강력한 기능을 활용할 수 있다!상속의 기본 개념Swift에서 클래스는 다른 클래스의 속성과 메서드를 상속받을 수 있다. 상속받는 클래스를 서브클래스(subclass),상속해주는 클래스를 슈퍼클래스(superclass)라고 한다.서브클래스는 슈퍼클래스의 모든 특성과 동작을 물려받으며, 필요에 따라 이를 확장하거나 재정의할 수 있다! class Vehicle { var currentSpeed = 0.0 func describe() -> String { return "현재 속도는 \(currentSpeed)km/h 입니다." }}c..
Swift에서 객체 생성자와 해제자는 클래스나 구조체의 인스턴스를 초기화하고 해제할 때 사용된다.이 개념을 이해하면 객체 지향 프로그래밍에서 메모리 관리를 더 효율적으로 할 수 있다!객체 생성자 (Initializer)생성자는 클래스나 구조체의 인스턴스를 초기화하는 역할을 한다.Swift에서 생성자는 init 키워드를 사용하여 정의된다.기본 생성자 외에도 매개변수를 받는 생성자, 그리고 편의 생성자(convenience initializer) 등을 정의할 수 있다!import UIKitclass Person { var name: String var age: Int // 기본 생성자 init(name: String, age: Int) { self.name = nam..
앞선 포스팅에서 설명한 클로저를 매개변수로 담는 방법이 있다.왜 굳이..?함수안에서 사용하는 기능을 매개변수로 집어넣으면서 코드 가독성이 좋아질 수 있다. func sayHi(completion : (Int) -> Int){ print("sayHi called") sleep(1) completion(2)}var total = 0let plus : (Int) -> Int = { total += $0 print("total :",total) return total}sayHi(completion: plus)sayHi(completion: plus)sayHi(completion: plus)print(total) 일반적으로 completion으로 선언하고 매개변수와 반환 타..