[Swift] 공식 문서 - 초기화(Initialization)
·
Swift/Swift 가이드
새로 배운 점 상수 프로퍼티는 이니셜라이저 안에서도 초기화할 수 있다. 구조체의 기본 이니셜라이저가 Memberwise Initializers라는 이름이라는 것 designated 이니셜라이저는 해당 클래스가 직접 상속받는 슈퍼클래스의 designated 이니셜라이저를 호출해야 한다. convenience 이니셜라이저는 같은 클래스의 다른 이니셜라이저만 호출해야 한다. convenience 이니셜라이저는 궁극적으로 designated 이니셜라이저를 호출해야 한다. Swift의 컴파일러는 2단계 초기화를 에러 없이 완료하기 위해 4가지 safety-check를 수행한다. 서브클래스에서 새로 추가한 모든 프로퍼티에 기본값이 지정되면, 두 가지 규칙이 적용된다. 만약 서브클래스가 어떠한 designated 이..
[Swift] 공식 문서 - 상속(Inheritance)
·
Swift/Swift 가이드
새로 배운 점 다른 클래스로부터 상속받지 않은 클래스를 기본 클래스(base class)라고 한다. someIndex로 오버라이딩된 서브스크립트는 오버라이딩된 서브스크립트 내부에서 super[someIndex]로 슈퍼클래스의 서브스크립트에 접근할 수 있다. Inheritance 클래스는 다른 클래스로부터 메서드, 프로퍼티, 특징들을 상속받을 수 있습니다. 다른 클래스로부터 상속을 받을 때, 상속을 받는 클래스는 subclass라고 하고, 상속을 하는 클래스는 superclass라고 합니다. Swift의 클래스는 그 클래스의 superclass에 속하는 메서드, 속성, 서브스크립트를 호출하거나 접근할 수 있고, 메서드, 속성, 서브스크립트를 오버라이딩(overriding)할 수 있습니다. Swift는 오버..
[Swift] Method와 Subscripts 실습하기
·
Swift/개념 & 응용
선행 포스팅 Swift 레퍼런스 중 Methods와 Subscripts 내용을 번역한 포스팅입니다. 자세한 개념 설명은 위 두 개의 포스팅에서 다루었고, 문서의 내용 중 몇 가지를 직접 실습해보겠습니다. mutating 실습 mutating 키워드는 구조체나 열거형에서만 사용 가능합니다. class에서 mutating을 쓰면 컴파일 에러가 발생해요. 원래 구조체나 열거형의 메서드 안에서 자신의 프로퍼티를 수정할 수 없습니다. 만약 수정을 시도하면 이렇게 mutable 하지 않다는 에러가 뜹니다. 에러를 펼쳐보면 mutable하게 만들라고 하면서 Fix 를 지원하는데요. 여기서 Fix를 누르면 struct SomeClass { var value: Int = 0 mutating func increase() ..
[Swift] 공식 문서 - Subscripts
·
Swift/Swift 가이드
* 완벽한 번역이 아닌 내용을 한 줄 한 줄 읽는 것에 의의를 두었습니다. * 파파고의 힘을 빌려 번역했으며 잘못된 번역이 있다면 댓글로 알려주세요. 새로 배운 점 클래스, 구조체, 열거형은 서브스크립트(subscripts)를 정의할 수 있다. 서브 스크립트를 사용하면 다른 메서드 없이 인덱스를 사용하여 값을 설정하고 검색할 수 있다. subscript 키워드로만 서브스크립트를 정의 가능하다. 클래스와 구조체는 필요한 만큼의 서브스크립트를 구현할 수 있다. 여러 개의 서브스크립트를 정의하는 것을 subscript overloading이라고 한다. 사용자 타입에 맞춰 여러 개의 파라미터를 받는 서브스크립트를 정의할 수도 있다. 서론 클래스, 구조체, 열거형은 서브스크립트(subscripts)를 정의할 수 ..
[Swift] 공식 문서 - Methods
·
Swift/Swift 가이드
* 완벽한 번역이 아닌 내용을 한 줄 한 줄 읽는 것에 의의를 두었습니다. * 파파고의 힘을 빌려 번역했으며 잘못된 번역이 있다면 댓글로 알려주세요. 새로 배운 점 mutating 메서드는 self 프로퍼티에 완전히 새로운 인스턴스를 할당할 수 있다. 열거형에서 mutating 메서드는 암시적 self를 같은 열거형의 다른 case로 설정할 수 있다. 메서드의 결과를 사용하지 않을 때 @discardableResult를 붙이면 "Result of call to ~~~ is unused" 경고를 표시하지 않는다. 서론 메서드는 클래스, 구조체, 열거형 안에 정의되는 함수(function)입니다. 메서드는 인스턴스 메서드와 타입 메서드를 정의할 수 있습니다. 인스턴스 메서드는 특정 작업 및 기능을 캡슐화하여..
[Swift] Property Wrapper
·
Swift/개념 & 응용
Property Wrapper Property Wrapper는 Swift 5.1에 나온 개념으로, 프로퍼티가 저장되는 방식을 관리하는 코드와 프로퍼티를 정의하는 코드 사이에 분리 계층을 추가합니다. 구조체, 클래스, 열거형의 local stored variable에서만 사용 가능하고, 전역 변수나 연산 프로퍼티에서는 사용 불가능해요. 정의는 아주 어렵지만... 보일러 플레이트 코드를 줄일 수 있는 유용한 기술입니다. (*보일러 플레이트 코드 : 유사한 코드가 여러 곳에서 사용되며, 반복적으로 비슷한 형태를 띄는 코드) SwiftUI에서 자주 보인다고 하는데요(전 아직 SwiftUI를 안 해봄 ㅠ) @Published, @Binding, @ObservedObject, @State 등이 Property Wr..
[Swift] 프로퍼티(Property) - 2
·
Swift/개념 & 응용
1편 보러가기 [Swift] 프로퍼티(Property) - 1 프로퍼티(Property) property는 value를 특정 클래스, 구조체, 열거형과 연결하는 역할을 합니다. 말은 어렵지만 클래스, 구조체, 열거형에서 값을 쓸 수 있도록 해주는게 property라는거에요. var hello: Stri jeong9216.tistory.com 프로퍼티 옵저버(Property Observers) 프로퍼티 옵저버는 프로퍼티의 값이 변경됨을 감지하고 적절한 동작을 수행할 수 있도록 합니다. 프로퍼티의 값이 새로 할당될 때마다 호출되고 같은 값이 할당되도 호출이 됩니다. 프로퍼티 옵저버는 아래 세 가지 상황에서 사용할 수 있습니다. 저장 프로퍼티를 정의할 때 설정 저장 프로퍼티를 Overriding 할 때 설정 ..
[Swift] 프로퍼티(Property) - 1
·
Swift/개념 & 응용
프로퍼티(Property) property는 value를 특정 클래스, 구조체, 열거형과 연결하는 역할을 합니다. 말은 어렵지만 클래스, 구조체, 열거형에서 값을 쓸 수 있도록 해주는게 property라는거에요. var hello: String = "Hello" 이 코드도 property를 나타낸건데 hello는 property 이름, String은 타입, "Hello"는 값입니다. "Hello"를 쓰기 위해서는 hello를 이용해야 하죠. Property에는 크게 4가지가 존재합니다. 저장 프로퍼티(Stored Property) 지연 저장 프로퍼티(Lazy Stored Property) 연산 프로퍼티(Computed Property) 프로퍼티 옵저버(Property Observers) 타입 프로퍼티(T..
[디자인패턴] MVC 패턴 with iOS
·
CS/디자인패턴
MVC 패턴 디자인 패턴 중 가장 기본적인 것을 말하라면 MVC 패턴이라고 할 수 있습니다. MVC 패턴은 애플에서 기본적으로 지원하는 디자인 패턴으로, Model - View - Controller 구조의 아키텍처 패턴을 말합니다. 일반적으로 사용되는 MVC 패턴과는 달리 iOS에서는 조금 다르게 사용이 되는데요. iOS는 ViewController가 사용되기 때문에 View와 Controller가 결합되었습니다. 일반적인 MVC 패턴과 애플의 MVC 패턴을 비교하고, MVC 장단점을 알아보도록 합시다. 마지막에는 직접 구현해보는 시간을 갖겠습니다. 일반적인 MVC 패턴 일반적인 MVC 패턴은 간단히 알아봅시다. Model은 앱이 가지는 데이터와 비즈니스 로직을 갖고 있습니다. View는 앱에서 유저에..
[Swift] Value 타입과 메모리 저장 공간
·
Swift/개념 & 응용
서론 지난 포스팅에서 Class와 Struct의 차이점을 다루며 Reference 타입과 Value 타입에 대해 다루었습니다. [Swift] Class와 Struct Class와 Struct 새로운 데이터 구조를 정의할 때 구조체와 클래스 중에 무엇을 사용할지 고민합니다. 클래스와 구조체의 차이에 대해 알아보고 어떤 상황에서 무엇을 쓰면 좋을지 알아보겠습니다. jeong9216.tistory.com Reference 타입과 Value 타입의 차이 중 하나가 저장되는 메모리 공간인데요. Reference 타입은 Heap, Value 타입은 Stack에 저장된다고 설명했고, 그렇게 알고 있는 분이 많으실 겁니다. 하지만 타입에 따른 저장 공간이 상황에 따라 달라질 수 있다는 거 아시나요? 오늘은 Value ..
유정주
'분류 전체보기' 카테고리의 글 목록 (25 Page)