Swift
-
weak property에 클래스 초기화구문을 대입하면 OOO. (안된다)앱등이에게 살충제를 뿌린다./iOS 2016. 4. 7. 18:39
let frame = CGRect(x: 0, y: 0, width: 100, height: 100) weak var myButton: UIButton! var myButtonNotWeak: UIButton! override func viewDidLoad() { myButton = UIButton(frame: frame) myButtonWithoutWeak = UIButton(frame: frame) }라는 코드가 있다고 할 때, myButton은 nil이 되고 myButtonWithoutWeak는 UIButton객체를 갖게 된다. 이게 왜 문제냐면.. 이 코드가 아래와 같았다면?let frame = CGRect(x: 0, y: 0, width: 100, height: 100) weak var myButt..
-
[Apple Dev Reference - Swift] Failable Initializer앱등이에게 살충제를 뿌린다./Apple Dev Reference 2016. 3. 30. 23:59
Apple Developer 문서를 번역만 하였습니다. Failable Initializers 가끔은 초기화가 실패할 가능성이 있는 클래스, 구조체, 열거형(enum)을 만드는 일이 유용할 때가 있습니다. 초기화 실패는 부적절한 초기화 매개변수 사용이나 필수적인 리소스가 없어서 발생할 수 있습니다. 초기화를 방해할만한 다른 요소들도 있을 수 있구요. 이런 초기화 실패를 적절히 대처하기 위해서 1개 이상의 Failable Initializer를 만들어 주세요. init뒤에 물음표()를 붙임으로써 Failable initializer를 만들 수 있습니다. Note : 같은 파라미터의 타입과 이름을 갖는 failable 과 nonfailable은 동시에 만들 수 없습니다. Failable Initializer..
-
[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] 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..
-
[iOS] supportedInterfaceOrientations 메소드를 이해해보자.앱등이에게 살충제를 뿌린다./iOS 2015. 10. 20. 23:37
//Swift func supportedInterfaceOrientations()->UIInterfaceOrientationMask //Objective-C -(UIInterfaceOrientationMask)supportedInterfaceOrientations Return Value 지원하고 싶은 회전방향(총 4가지)을 담는 Bit mask를 리턴합니다. Bit mask의 종류는 여기를 클릭해서 종류를 살펴보세요. 이 메소드는 절대로 0을 리턴해서는 안됩니다. **Bit Mask는 비트 연산자를 사용해 여러가지 정보를 하나의 변수에 담을 수 있는 기법입니다. Discussion 사용자가 디바이스의 방향을 바꿀 때, 시스템에서 이 메소드를 호출시킵니다. Root ViewController 또는 화면을 ..
-
[ios/Objective C] 뷰 회전관련 메소드앱등이에게 살충제를 뿌린다./iOS 2015. 7. 29. 23:08
디바이스 회전 제어하기 - (BOOL) shouldAutorotate자동 회전 지원 여부 (YES/NO) - (BOOL) shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrientations회전방향 지원 유무 리턴 (리턴값은 회전 방향의 비트값이 설정된 플러그) -(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscapeRight; } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)du..