앱등이에게 살충제를 뿌린다.
-
UITabBarController, UITabBar, UIToolbar.. 무엇을 선택할까?앱등이에게 살충제를 뿌린다./일기는 일기장에 2016. 6. 5. 22:34
한개의 네비게이션 컨트롤러를 사용하는 앱을 개편하면서 탭바를 적용했다. iOS 앱에서 탭바를 보게되면 탭 별로 NavigationController를 갖는 것으로 기대하기 쉽다. Ex) 카카오톡, 인스타그램, 페이스북 하지만 안드로이드와 협의하에 1개의 네비게이션만 존재하고 탭을 누르면 네비게이션의 rootViewController가 변경되고 popToRootViewController하는 방식으로 채택 고민한 선택 방안은 4가지 UITabBarController UITabBar UIToolbar NavigationViewController.toolbar 장점 델리게이트메소드가 풍부함 커스터마이징이 좋음 커스터마이징이 좋음 viewController.view의 frame관리가 편함 단점 하나의 Naviga..
-
UITabBarController에 탭바를 버튼처럼 사용하기. feat.인스타그램앱등이에게 살충제를 뿌린다./iOS 2016. 5. 30. 16:32
인스타그램의 UI입니다. 가운데 탭을 누르면 현재 탭에 modal로 사진을 고르는 화면이 present됩니다.어떻게 한걸까요? UITabBarController에 tab만 넣고 viewController를 넣지 않는 것은 불가능하기에 아래 시나리오처럼 따라주세요.코드는 그냥 수도코드로 봐주세요~ 1. TabBarController의 viewControllers에는 5개의 viewController를 넣어주세요. 가운데 탭에 해당하는 viewController는 fake입니다. 사용하지 않을 viewController이기 때문에 아무 인스턴스나 넣어주시면 됩니다. 2. UITabBarControllerDelegate의 메소드인 optional func tabBarController(_ tabBarContr..
-
[Apple Dev Reference] Nullability and Objective-C앱등이에게 살충제를 뿌린다./Apple Dev Reference 2016. 5. 22. 18:04
Nullability and Objective-C글 하단에 3줄요약 해놓음 Swift와 Objective-C를 한 프로젝트에서 같이 사용할 수 있다는 것. Swift의 장점 중 하나입니다.(이걸 장점이라고 해야하나 모르겠네요) 하지만 Objective-C와 Swfit에는 명백히 많은 차이점이 존재합니다. 그 중 하나를 예로 들어보겠습니다. Swift에는 Optional타입과 non-Optional타입이 존재합니다. NSView와 NSView?같이 말이죠. 반면에, Objective-C에는 딱 하나 NSView *만 존재하고 있습니다. 이 차이점으로 인해 컴파일러는 혼돈이 생길 수 밖에 없습니다. NSView *가 Optional인지 non-Optional인지 알 도리가 없는거죠. 따라서 현재(Swift2..
-
[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] Strong Reference Cycles for Closures앱등이에게 살충제를 뿌린다./Apple Dev Reference 2016. 5. 15. 23:13
서로 강한참조를 하면 절대 메모리에서 사라지지 않는다 Strong Reference Cycles for ClosuresStrong Reference Cycles for ClosuresARC & Strong Reference Cycle에서는 두 인스턴스가 서로 강하게 참조할 때 순환 참조(Strong Reference Cycle)가 발생하는 것을 살펴보았습니다. weak 참조와 unowned 참조를 사용하여 이를 해결하는 방법도 살펴보았습니다. 클로져에서도 비슷한 경우가 있습니다. 클로져의 바디에 인스턴스의 프로퍼티나 인스턴스를 캡쳐하면 순환 참조가 발생할 수 있습니다. self.someProperty처럼 클로져에서 해당 인스턴스의 프로퍼티에 접근할 때나 self.someMethod()와 같이 인스턴스의 ..
-
[Apple Dev Reference - Swift] ARC & Strong Reference Cycle앱등이에게 살충제를 뿌린다./Apple Dev Reference 2016. 5. 15. 02:01
Automatic Reference Counting Swift는 메모리관리를 위해 ARC(Automatic Reference Counting)를 사용하고 있습니다. 대부분 이 ARC덕분에 여러분은 메모리 관리를 신경쓸 필요가 없습니다. ARC는 필요없는 인스턴스를 자동으로 메모리에서 해제함으로써 메모리관리를 합니다. 하지만 가끔은 ARC가 여러분의 코드로 메모리 관리를 할 때, 추가적인 정보가 필요할 때가 있습니다. 어떤 경우인지, 또 그런 상황은 어떻게 해결해야할 지 이 챕터에서 다뤄보겠습니다. Note : 참조 카운트는 클래스의 인스턴스에만 적용됩니다. Structure와 Enumeration은 Value타입이기 때문에 참조 카운팅이 필요 없습니다. How ARC Works 새로운 인스턴스가 생성되면..
-
[Apple Dev Reference - Swift] Implicitly Unwrapped Optionals앱등이에게 살충제를 뿌린다./Apple Dev Reference 2016. 5. 15. 01:57
Implicitly Unwrapped Optionals아시겠지만 옵셔널이란 "no value"를 나타낼 수 있는 타입입니다. 옵셔널은 if문을 통해서 변수에 값이 있는지를 체크하고 옵셔널 바인딩을 통해 값을 해제하여 사용할 수 있습니다. 하지만 가끔은 데이터의 구조상 '항상' 값을 갖는 옵셔널이 있을 수 있습니다. 이런 경우에는 옵셔널을 언래핑할때 굳이 nil체크를 할 필요가 없겠죠. 항상 값을 갖고 있으니 언래핑이 안전하게 될 것입니다.이런 종류의 옵셔널을 implicitly unwrapped optional이라고 합니다. implicitly unwrapped optional을 선언할 때는 타입에 물음표(String?)가 아닌 느낌표(String!)를 붙여주어야 합니다.implicitly unwrapp..