델리게이트 패턴에서 제네릭으로 – Swift

(제목이 스포일러이긴한데…) 간단한 클래스를 하나 작성해보자. 0으로 시작하는 값에서 메소드를 하나를 호출하면 그 값을 1씩 증가시켜나가는 것이다. class Counter {   var value: Int = 0   func increase() {     value += 1     print(“value: \(value)”)   } } 현실적으로는 별 쓸 데 없는 이 클래스를 사용하려 할 때, 값이 변할 때 수행하는 동작을 입맛에 맞게 커스터마이징하고 싶은 경우가 있을 수 있다. 물론 increase() 메소드를 그 때 그 때마다 변경하면

프로퍼티 리스트 타입

프로퍼티 리스트는 코코아의 표준 데이터 타입 클래스들을 직렬화/역직렬화하는데 사용되는 구조화된 데이터 포맷이다. 프로퍼티 리스트는 .plist 라는 확장자의 파일로 기록되어 코코아 앱에서 광범위하게 쓰인다. 특히 모든 코코아/코코아터치 앱의 번들에는 기본적으로 Info.plist라는 파일이 있고, 이 파일은 앱의 기본적인 론칭에 필요한 필수적인 정보들(메인 nib파일 및 스토리보드 경로등)이 지정되어 있다. 프로퍼티 리스트는 구조화된 트리이며, 파일로 저장될 때에는 XML의 형식이나

이중옵셔널에 대하여 – Swift

Swift의 캐스팅 연산자인 as? 는 T 타입으로 캐스팅에 실행할 가능성을 내포하기 때문에 T? 타입을 만들게 된다. 이 때 변환하려는 값이 이미 옵셔널타입인 경우에는 nil이 아니면 T 타입으로 간주하여 최종 결과는 T??가 아닌 T?가 된다. var a: Any? = 8 if let x = a as? Int { // a는 Any?이면서 그 값이 Int 형으로 변환될

오일러 프로젝트 69

오일러 프로젝트 69 번 문제는 오일러의 피(phi)함수에 관한 내용이다. 사실 소인수분해를 빠르게 할 수 있는 방법만 있다면, 오일러 피함수 역시 간단하게 구현할 수 있으나, 여기서는 범위가 1,000,000까지이므로 만만한 문제가 아닐 수 있다. 그런데 문제를 잘 파악해보면 의외로 쉬운 문제이기도 하다.