일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- swiftUI
- swift documentation
- collectionview
- UICollectionView
- RxCocoa
- Refactoring
- 애니메이션
- tableView
- MVVM
- SWIFT
- ribs
- Human interface guide
- map
- Clean Code
- Observable
- combine
- uitableview
- 리팩토링
- Protocol
- 리펙터링
- 스위프트
- rxswift
- uiscrollview
- HIG
- ios
- 리펙토링
- 클린 코드
- Xcode
- UITextView
- clean architecture
- Today
- Total
목록분류 전체보기 (1617)
김종권의 iOS 앱 개발 알아가기
1. 특성 - 단일 상속만 지원 ※ protocol은 다중 구현 가능 1 2 3 4 5 6 7 8 import UIKit class C1{ } class C2: C1, UIContentContainer, UIAppearanceContainer{ // 다중 구현한 protocol과 단일 상속한 C1구별 } 2. 오버라이딩 - override키워드 붙임 - 메서드 뿐만 아니라 연산프로퍼티 변수 또한 오버라이딩 가능 - 수정 할 수 있는 변수로 하려면 역시, set키워드 넣을 것 - didSet, willSet이용 가능 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import UIKit class Machine{ var name: String = ..
1. 구조체와 클래스의 차이 - 클래스만이 가지고 있는 특성 : 상속, 타입 캐스팅, 소멸화 구문, 참조에 의한 전달 - 구조체만이 가지고 있는 특성 : Memberwise Initializer ( 모든 인자값을 받고 초기화 해주는 구문을 자동으로 생성) 1 2 3 4 5 6 7 8 9 10 struct MyStruct{ var a : Int = 1 var b : Int = 2 func f () -> () { } } MyStruct() // 기본 초기화 MyStruct(a: 1, b: 2) // 모든 인수 초기화 - 구조체는 값에 의한 복사이고 클래스는 주소를 넘겨줌 - 클래스는 메서드에서 멤버변수를 바꿀 수 있지만, 구조체는 메서드에서 멤버변수에 있는 값을 바꾸려면 mutating 키워드를 사용해야함 ..
1. 클로저표현식 : 익명함수, 주변 환경으로부터 값을 "캡쳐"(휘발성인 지역변수의 값이 저장되는 것)할 수 있는 경량 문법 즉, 클로저라는 것은 리턴된 타입(어떤 함수의 종료)을 참조할 때, 함수가 이미 종료된 시점에서 특정 변수를 참조하는 것 - 클로저표현식은 익명함수로 생각하면 편함 - func키워드, 함수이름 제거한 후 나머지만 표현 1) 기본 사용법 // 대입 후 실행 let a = { (v1: Int, v2: Int) -> Void in print("value1 = \(v1), value2 = \(v2)") } a(1,2) // 바로 실행 ({ (v1: Int, v2: Int) -> Void in print("value1 = \(v1), value2 = \(v2)") }) 2) 생략 // 정..
1. 함수 - 인자레이블 : 매개변수 이름 1 2 3 4 5 6 7 8 9 10 func myFunc(myValue: Int, myValue2: Int) -> (String, Int) { var ret : (String, Int) = (String(myValue + myValue2)!, myValue1) return ret } // myValue, myValue2가 인수레이블 myFunc(myValue: 123, myValue2: 13) // 함수호출방법 1 myFunc(myValue:myValue2:)(123, 13) //함수호출방법 2 - 위에서 함수 이름은, myFunc(myValue:myValue2) - defer 블록 : 함수안에서 return을 만나기 전에 defer블록을 만나게 되면, ret..
1. Optional 타입이란? - '?'로 표현 - nil(값이 없음) 타입을 정의하기 위한 수단 1 var myValue : Int = nil // error : 'nil' cannot initialize specified type 'Int' nil타입을 사용하기 위해서는 optional형태로 감싼 자료형으로 표현가능 Optional(nil), Optional(123) 1 2 3 4 var myValue : Int? = nil var optDic : [String:String]? // Dictionary 타입 Int("123") // 옵셔널 객체로 반환 Int("123") + 123 // error : 옵셔널 객체는 연산 불가 - 자료형 뒤에 '?' 붙이는 것 - 연산이 불가능 함 2. 옵셔널 해제 ..
1. 배열(Array) - 스위프트의 배열은 동적배열 중간에 있는 값을 삭제하면, 뒤에 있는 원소들을 한 칸씩 떙김 1) 선언 1 2 3 4 5 6 // 선언과 초기화 var myArr : Array = Array() var myArr = Array() // 간편한 선언과 초기화 var myArr : [Double] = [Double]() var myArr = [Double]() var myArr : [Double] = [] // 이 경우에서는, 소괄호를 안해주어도 초기화가 됨 2) 탐색 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 var name = {"kim", "lee", "seo"} // 인덱스 접근 for i in 0..
1. 반복문 1). for, while문은 c++, java의 for문에서 소괄호를 뺀 반복문과 동일 2). repeat - while문. / /do ~ while문과 동일 1 2 3 repeat { } while 2. 제어문 1). guard문 : 조기 종료를 위한 제어문 (조건이 맞으면 그냥 넘어가고 맞지 않으면 다른 조치를 취하라는 제어문) 1 2 3 4 5 6 var a : Int = 2 var b : Int = 0 guard b != 0 else { return } a / b // guard에 의해서 실행되기 전에 종료 2). #available문 : 플렛폼의 버전을 확인하는 제어문 1 2 3 if #available(iOS 9, OSX 10.10, *) { // iOS 9, OSX 10.10관..
1. 변수 1). 타입 어노테이션(type annotation) : 타입을 명시적으로 선언 - 런타임 에러 방지 ( 컴파일 에러로 대체) 1 var age: Int = 1234 // "Int"와 같이 콜론 뒤에 써주는 자료형을 타입 어노테이션이라 함 2). 변수 이름 - 스위프트에서는 모든 문자 및 이미지까지 사용 가능 1 2 3 var myValue = "ffas" var 123 = "ffas" var ♠ = "ffas" - 가독성을 위해 낙타와 같은 모양을 띄고 있다고 하는 Camel형으로 작성하는것을 일반적으로 함 var myValueMyStyle = 123 - 상수는 var 대신에 let으로 선언 3). Int사용 - Int8, Int16과 같이 명시적으로 할 수 있지만, 숫자를 안붙이고 Int만..