목록iOS (133)
k-coding
1. 확장 https://choiki923.tistory.com/49 Swift 확장 ( extension ) Swift 확장 ( extension ) extension은 기본 클래스, 구조체, 열거형 타입에 새로운 프로퍼티, 메소드, 생성자를 추가하는것이다. 원본 타입에 접근하지 못하는 타입들도 extension을 통해 확장하여 사용 choiki923.tistory.com 2. 접근제어 접근 속성은 클래스, 메소드, 멤버 접근가능성을 설정하는 객체 지향 언어의 키워드이다. 크게는 private, internal, public, open 등이 있다. 대부분이 internal로 선언된는것이도 클래스나 메소드, 멤버 앞에 아무것도 붙이지 않는 우리가 아는 일반적인 형태가 internal로 선언하는것이다. o..
Swift 프로토콜 프로토콜은 클래스, 구조체, 열거형에서 채택하여 특정기능을 실행하기 위한 최소한의 속성, 메소드 정의를 제시하고 기능을 구현하지 않는다. 프로토콜의 기본 선언 방식 protocol ProtocolName { // 정의할 코드 } 프로토콜안에서는 정의만 하기때문에, 메소드 또한 선언만 하고 기능 구현은 하지않는다. 또한, 안에서 프로퍼티가 저장 프로퍼티인지, 연산 프로퍼티인지 구분하지않고, var 이름: 타입 { get/set }만 명시한다. protocol Letter { var from: String? { get } var to: String? {get set} func send() } 다음 코드를 보면 protocol Info { var name: String {get} var a..
Swift 확장 ( extension ) extension은 기본 클래스, 구조체, 열거형 타입에 새로운 프로퍼티, 메소드, 생성자를 추가하는것이다. 원본 타입에 접근하지 못하는 타입들도 extension을 통해 확장하여 사용할 수 있다. extension을 사용하면 하위 클래스를 생성하지 않고, 기존 클래스에 기능을 추가할 수 있다. extension abcdExtension { // 추가할 코드 } extension 뒤에는 프로토콜을 추가 할 수 있다. extension abcdExtension: protocol, anotherProtocol { // 추가할 코드 } 다음은 표준 자료형타입에 코드를 추가하는 예시이다. extension Int { // 계산 프로퍼티 // get only , 읽기만 가..
Swift 열거형 ( enum ) 열거형이란 같은 주제로 연관된 데이터들을 멤버로 구성하여 나타내는 자료형 이다. enum의 기본 구조는 다음과 같다. enum EnumName { case name1 case name2 case name3, name4, name5 // ... } 이렇게 case별로 정리한 열거형이 하나의 자료형이 된다. Raw Value raw value 한국어로 원시값이라는 이것은 enum내부에 독립적인 값을 저장하는것이다. enum EnumName: Int { case name1 = 1 // 1 case name2 // 2 case name3 = 10 // 10 case name4 // 11 case name5 // 12 } enum의 타입이 int이면 첫번째 case..
Swift Optional ( 3 ) - optional chaining Optional Chaining 옵셔널 체이닝이란 옵셔널이 체인처럼 묶여서 연쇄적으로 작동되는것이다. 풀어서 말하자면 .을 통하여 내부 메소드,프로퍼티에 접근할 때 상위에 옵셔널 값이 하나라도 있다면 모두 옵셔널 취급하는것이 옵셔널체이닝이다. 다음과 같은 예제가 있다. struct Contact { var phoneNumber: String var address: [String: String] } struct Profile { var name: String var contact: Contact init(name: String, phoneNumber: String, address: String) { self.name = name co..
Swift Optional ( 2 ) Optional된 상수, 변수를 unwrapping하는 과정으로는 강제 추출과 optional binding을 포스팅한적이 있는데, 이 두개를 제외하고 다른 optional을 다루는 명령어를 익혀보고자 한다. 첫번째는 ?? 연산자이다. ?? ( Nil-Coalescing Operator ) 다음과 같이 ??를 사용하면 값을 굳이 꺼내지 않아도 된다. Optional 표현식 ?? nonOptional 표현식 예제를 보자면 let name: String? = "choiki" print("name is" + (choiki ?? " not collected ")) 위에 코드는 첫번째 줄에 선언된 number가 nil값이 아니라면 ?? 기준으로 앞에있는 name is choi..
Swift에서의 함수 사용 기본 함수 형태 func 함수명(인자이름 인자변수: 인자타입) -> (리턴 타입) { // ... 함수 내용 ... return } 함수명(인자이름: 0) return 타입 swift에서는 리턴을 받아줄 경우 리턴받는 타입에 대하여 ->를 사용하여 표현합니다. func returnType(argumentLabel arg: Int) -> (Int) { return arg } let newFunc = returnType(argumentLabel: 10) argument label ( 인자 이름 ) swift는 함수의 인자를 정의할 때, 인자이름을 정의하여 줍니다. 따로 설정하지 않으면 인자 변수명이 인자이름으로 기본값으로 설정됩니다. 또한, _를 통하여 인자이름을 생략할 수 있습니..
Swift 제네릭 ( Generic ) 제네릭이란 타입에 의존하지 않는 범용 코드를 작성할 때 사용한다. 제너릭을 사용하면 같은기능이지만 타입이 다른 중복 함수를 피하고, 가독성이 좋은 코드를 작성할 수 있다. swift는 타입에 굉장히 예민한 언어이다. 따라서 함수나 변수에 타입이 잘못 기입되거나, 타입이 일치하지않으면 어김없이 컴파일에러가 발생하고야 만다. 제네릭 함수 다음과 같은 함수가 있다. func swapInt(_ a: inout Int, _ b: inout Int) { let temp = a a = b b = temp } 이 함수는 파라미터가 둘다 int형이라 문제없이 컴파일 된다. 하지만 둘 중 하나의 타입이 다르다면 컴파일 에러가 발생한다. 따라서 float나 double 형으로도 같은 ..
타입 메소드 https://choiki923.tistory.com/39 Swift 타입 메소드 ( static 메소드 / class 메소드 ) Swift 타입 메소드 ( static 메소드 / class 메소드 ) 스위프트에는 메소드 종류가 크게 3가지가 존재하는데, 그중 하나가 전에 다루었던 인스턴스 메소드이고, 나머지 두 개는 지금 알아볼 static메 choiki923.tistory.com init() , 실패가능 연산자 https://choiki923.tistory.com/40 Swift init() 인스턴스 초기화 Swift init() 인스턴스 초기화 인스턴스의 저장 프로퍼티는 사용하기전에 항상 초기화가 되어야 합니다. 스위프트에서는 init()이라는 생성자를 사용하여, 인스턴스의 프로퍼티들마..
Swift 상속 ( inheritance ) 상속이란 한 클래스가 가지고 있는 프로퍼티와 메소드를 다른 클래스에게 그대로 승계해주는것 입니다. 보통 다음과 같은 형태로 상속됩니다. class Subclass:SuperClass { //... } 이렇게 상속할 때에는 다음과 같은 규칙이 있습니다. Swift에서 상속은 1. 클래스에만 있고, 구조체에는 없다. 2. 자식클래스가 부모클래스로부터 기능을 물려받는다. 3. 상속을 받은 클래스도 새로운 자식 클래스에게 상속이 가능하다. 4. 단일 상속만 가능하다. ( 부모 클래스는 무조건 하나! ) 만일 콜론 다음이 여러 개 이면, 나머지는 프로토콜이다. ex) class Subclass:SuperClass,프로토콜1,프로토콜2{ } 5. 상속은 클래스 사이에서만..