Swift의 온도
-
Swift #16 - Any와 타입 체크, 제네릭스Swift의 온도 2021. 1. 27. 02:03
1. Any타입과 타입 변환 - Any, AnyObject #강한 타입 체크 *변수/상수 : 선언할 때 타입 확정 *다른 타입의 값 대입 금지 #Any, AnyObject *가변 타입 *Any : 모든 타입 *AnyObject : 모든 레퍼런스 타입 - Any #Any *Any 타입 선언과 다양한 타입의 값 대입 var anyVar : Any = 2 anyVar = "b" anyVar = MyClass() *Any를 이용한 다양한 타입의 배열 var anyArray : [Any] = [1, "2", 3.0] cs #타입에 대한 정보가 없음 *타입별 메소드, 프로퍼티 사용 불가 *타입 체크, 타입 캐스팅 필요 #타입 정보 얻기 type(of:) cs #옵셔널 *nil 대입하려면 Any?로 선언 - 타입 체..
-
Swift #15 - 에러처리Swift의 온도 2021. 1. 26. 00:43
1. 예외 상황 - 예외 상황 #예외가 발생할 수 있는 상황 *파일 처리 중 디스크 에러 *권한이 부족한 상황 #에러 발생해도 크래쉬 되지 않도록 - 에러 발생 API #예외가 발생할 수 있는 상황 *throws로 선언 *파일에 저장 API func write(toFile: String, atomically useAuxiliaryFile:Bool, encoding enc: String.Encoding) throws cs - throws 함수 호출하기 #throws 함수 호출하기 *try를 이용해서 호출 *컴파일 에러 안 남 *그러나 에러 발생 - 애플리케이션 크래쉬 try str.write(toFile: filePath, atomically: true, encoding: .utf8) cs - 에러 다루기..
-
Swift #14 - 프로토콜, extensionSwift의 온도 2021. 1. 22. 01:48
1. 프로토콜 - 인터페이스와 구현 #인터페이스(interface) #구현(implementation) #클래스 : 인터페이스 + 구현 #프로토콜 : 인터페이스 Only *구현이 없어서 단독 사용 불가 *클래스, 구조체와 함께 사용 *메소드, 프로퍼티 구현 약속 - 프로토콜 정의와 채택 *프로토콜 정의 protocol PROTOCOL_NAME { } *채택 class CLASS_NAME : PROTOCOL_NAME { } Colored by Color Scripter cs #클래스와 프로토콜 *상속과 프로토콜 : 부모 클래스를 첫 번째, 프로토콜은 두 번째부터 - 프로토콜 사용 예제 *프로토콜 정의 protocol Singing { func sing() } *클래스 채택 class Bird : Singi..
-
Swift #13 - 클로저Swift의 온도 2021. 1. 21. 01:49
1. 클로저와 함수 타입 - 클로저 #클로저란? *클로저는 함수 객체 *클로저 형태 : 함수나 코드 블록 *클로저가 정의된 콘텍스트까지 포함 - 함수 객체 *함수 정의 func sayHello() { print("Hello") } *함수 호출 sayHello() *함수 참조 var hello = sayHello hello() *파라미터로 사용하기 var hello = sayHello greet(hello) *함수 파라미터 정의? func greet(_ arg : ????) { } cs - 함수 타입 *함수 객체를 참조 변수로 사용할 때의 타입 *파라미터로 사용할 때 *함수 타입 : 함수의 구성 요소인 파라미터, 반환 타입으로 구성 #함수 타입의 예시 *파라미터 없고, 반환 값 없는 함수 : () -> (..
-
Swift #12 - 구조체와 EnumSwift의 온도 2021. 1. 20. 01:01
1. 구조체 - 객체지향 프로그래밍 #애플리케이션에서 다루는 데이터와 행위 #클래스로 작성하기 *클래스와 메소드, 프로퍼티 #클래스 외 다른 선택 *구조체 *Enum - 구조체 정의 *struct [구조체 이름] {} *좌표를 다루는 구조체 Point 작성 *프로퍼티와 메소드 struct Point { var x = 0 var y =0 func description() -> String { return "Point : \(x), \(y)" } } cs - 구조체 사용 #구조체 객체 *객체 생성과 사용 var p1 = Point p1.x = 10 p1.y = 20 *프로퍼티를 자동으로 초기화하는 객체 생성 var p2 = Point(x:3, x:5) cs - 구조체 초기화 #구조체 객체 초기화 *초기화가 ..
-
Swift #11 - 메모리 관리Swift의 온도 2021. 1. 19. 01:23
1. ARC와 메모리 관리 - 객체 생성과 메모리 #객체 생성 -> 메모리 차치 #메모리 공간의 제약 -> 메모리 관리 #메모리관리 *필요한 객체 유지 *필요 없는 객체 해재 #객체가 사용 중인가? *사용중이라는 표시 - 소유하기(Own) *객체 소유하는 방법 - 강한 참조(Strong pointer) - 객체 소유 관리 #레퍼런스 카운트(Reference Count) *강한 참조의 개수 *객체 사용 -> 레퍼런스 카운트 늘리기 *객체 사용 끝 -> 레퍼런스 카운트 감소 *레퍼런스 카운트 0 : 객체 사용 끝 #레퍼런스 카운트 관리 *수동 관리 : 레퍼런스 카운트 증가/감소 코드 작성 *자동 관리 : 레퍼런스 카운트 증가/감소 자동 - ARC #Automatic Reference Counting #자동 ..