앱등이에게 살충제를 뿌린다./Swift
-
[Swift] 타입 캐스팅앱등이에게 살충제를 뿌린다./Swift 2015. 12. 22. 23:30
class AAA{ var someVar = 0 } class BBB : AAA{ } let b:AAA = BBB() 타입 캐스팅 특정 타입으로 선언된 값을 다른 타입으로 변환하는 것 일반적으로 상속 관계에 있는 타입들 사이에서 허용됩니다. 매스팅되기 전 타입과 캐스팅되고 난 후 타입의 상위/하위 관계에 따라 업 캐스팅과 다운 캐스팅으로 나뉘어집니다. 업 캐스팅하위 클래스 타입을 상위 클래스 타입으로 캐스팅할 때(캐스팅하기 전 타입이 하위 클래스, 캐스팅한 후 타입이 상위 클래스)캐스팅한 결과, 캐스팅하기 전 타입보다 추상화될 때일반적으로 캐스팅 과정에서 오류가 발생할 가능성이 없음let child = BBB() child as AAA 다운 캐스팅상위 클래스 타입을 하위 클래스 타입으로 캐스팅할 떄(캐스..
-
[Swift] Set(집합)이라는 컬렉션앱등이에게 살충제를 뿌린다./Swift 2015. 11. 11. 23:19
집합(Set)은 배열과 유사합니다. 같은 타입의 서로 다른 값을 저장하지만 순서가 보장되지 않습니다. 배열은 같은 값이 중복되어 포함될 수 있고 순서또한 있다는 차이점이 있습니다. 집합은 Hash값을 이용하여 데이터를 저장하기 때문에 저장되는 데이터는 Hash연산을 할 수 있는 데이터여야 합니다. 스위프트의 기본 데이터타입들은 모두 Hash를 지원하지만 커스텀 타입의 데이터 타입은 스위프트 라이브러리에서 제공하는 Hashable프로토콜을 구현해주어야 합니다. 어쨋든 되긴 되나보네요. 집합을 정의하는 방법은 아래와 같습니다. var genres : Set = ["Classic", "Rock", "Balad"] 배열과 같은 데이터 타입으로 초기화되고 있지만 Set이라는 Type annotation을 사용하여..
-
[Swift] guard가 if보다 나은 이유?앱등이에게 살충제를 뿌린다./Swift 2015. 11. 10. 22:58
Swift 2.0에 guard가 등장했다. 이 놈이 평범한 if문보다 어떤 강점이 있는걸까? 복잡도를 최소화해보자. 조건문은 모든 프로그래밍 언어에서 기본적으로 갖추고 있는 요소입니다. Obj-C도 Swift도 예외는 아닙니다. 어떤 애플리케이션을 만들더라도 조건문에 의한 복잡도를 벗어나는 완벽한 방법은 없을 것입니다. 불행히도, 조건문은 종종 복잡도를 높이는 원인이 되곤 합니다. 촘촘히 쓰여진 조건문은 디버깅의 방해요소가 되기도합니다. 촘촘한 if문을 피하기 위해서 아래와 같은 방법을 사용하기도 했어요. - (void)fetchListOfCustomers:(NSArray *)customers { if (!self.reachable) return; if (!self.connected) return; if..