스위프트
-
[Swift] Swift로 유닛테스트를 하려면? How to Unit-test in Swift?앱등이에게 살충제를 뿌린다./Swift 2017. 1. 9. 19:11
Writing Tests with SwiftThe Swift access control model prevents tests from accessing internal declarations in the app or framework. To access internal functions in Swift with Xcode 6, you need to make these entry points public for testing, reducing the benefits of Swift’s type safety.Xcode 7 provides a two-part solution for this problem:Swift internals are made accessible when building for testi..
-
[Apple Dev Reference - Swift] Nonescaping Closures앱등이에게 살충제를 뿌린다./Apple Dev Reference 2016. 5. 22. 14:50
Nonescaping Closures함수의 파라미터로 클로져가 전달될 때가 있습니다. 이 때, 함수가 종료된 후에도 함수 외부에서 파라미터인 클로져를 사용하는 경우가 있습니다. 이 경우 우리는 클로져가 escape(탈출)되었다고 합니다. 그리고 함수를 정의할 때, 클로져 파라미터에 @noescape키워드를 사용하여 escape하지 않는 클로져라는걸 명시해줄 수 있습니다.클로져 파라미터 앞에 @noescape를 붙여주면 컴파일러는 이 클로져의 lifespan(생명주기같은?)에 대해 더 잘알기 때문에 좀 더 optimization을 해주게 됩니다. 예를 들어, sort(_:)메소드는 클로져를 파라미터로 받습니다.(배열의 element들을 정렬하는 데에 사용되죠) 이 때, 해당 클로져는 element정렬이 끝..
-
[Apple Dev Reference - Swift] Generics (of Swift2.2)앱등이에게 살충제를 뿌린다./Apple Dev Reference 2016. 4. 24. 15:18
Generics제네릭 코드를 사용하면 좀 더 유연하고 재사용률이 높은 함수를 만들 수 있습니다. 제네릭을 통해 코드 중복을 방지할 수 있고, 함수의 역할을 좀 더 명백히 전달할 수도 있습니다. 제네릭은 Swfit의 가장 큰 강점 중 하나입니다. 수 많은 Swift라이브러리들이 이 제네릭을 사용하고 있습니다. 못 알아채셨을 수도 있는데, Swift 언어를 익히시는 동안 계속 제네릭을 사용해왔습니다. 예를 들어, Swift의 Array와 Dictionary는 둘 다 제네릭 컬렉션입니다. Array를 만들 때, Int타입 Array나 String타입 Array를 만들기도 하고, 또 여러분이 직접 만든 클래스 타입으로도 수 많은 종류의 Array타입을 만들어 보셨을겁니다. Dictionary에서도 유사하게 무수..
-
[Swift] Objective-C 오픈소스(AFNetworking 2.0)를 Swift에 적용시켜보자앱등이에게 살충제를 뿌린다./Swift 2016. 3. 21. 00:28
AFNetworing을 사용해보려고 다운을 받았는데, Objective-C로 되어있네요.스위프트에 적용시키는 법을 알아봅시다. 1. Build Settings - Defines Module을 YES로 설정해줍니다. 2. bridge.h 파일을 하나 만들어 줍니다.(저 밑줄 부분만 적어주시면 됩니다.) 3. Build Settings - Swift Compiler - Objective-C Bridging Header에서 작성한 파일명을 넣어주세요. 4. 교감 끝 5. 진짜 끝 출처 : http://stackoverflow.com/questions/24120402/swift-and-afnetworking-integration
-
[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] 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..