Swift
-
[iOS] UIButton의 중복터치를 막아라앱등이에게 살충제를 뿌린다./iOS 2016. 7. 29. 14:53
iOS / Android 모두 가능한 중복터치 방지하기. 내 코드(코드연령 8세)에서는 찾아볼 수 없는 노하우가 회사에는 곳곳에 있다. 그중 하나가 바로 중복터치를 방지하기 위함 여러분은 Ctrl+C, Ctrl+V할 때 과연 C를 몇번 누르시나요?전 Ctrl버튼을 누른 뒤 C를 4번정도 연타하는 것 같네요. 모바일 앱에서도 터치를 다다닥 하는 경우가 있을텐데요. 이를 방지하는 기법을 소개해보고자 합니다.시나리오는 아래와 같습니다. 메소드는 중복해서 호출이 되지만 preventButtonTouch의 값 때문에 처음 호출된 메소드가 종료되기 전까지는 메소드의 body가 중복해서 수행되지 않습니다. 끝
-
[iOS] UICollectionView에서 발생하는 크래쉬앱등이에게 살충제를 뿌린다./고무망치를 도와라 2016. 7. 29. 13:02
UICollectionView를 상속받은 MyCollectionVIew에서 크래쉬가 발생한다. 1. 모든 디바이스에서 발생하는 것이 아님. 현재는 5s에서 발생하고 6, 6s에서는 발생하지 않음2. OS는 8.3, 9.3에서 테스트를 해보았으나 무관하게 발생3. 크래쉬가 100%재현되는 것이 아님. 그리고 크래쉬 로그는 (xxxxxxxxx는 서비스명이라 가림) 2016-07-29 11:44:57.518 xxxxxxxxxxxx dev[55017:14292281] *** Assertion failure in -[xxxxxxxxxxxx.MyCustomCollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:..
-
[iOS/UIToolbar] UIToolbar의 tintColor와 배경색backgroundColor앱등이에게 살충제를 뿌린다./iOS 2016. 7. 26. 13:36
UIToolbar의 컬러에 대해서 생각해봅시다. navigationController.toolbarHidden = false를 적용 해보세요^^ 결과화면 그렇다면 저 파란색은 어떻게 바꿀까요?viewDidLoad에 한 줄만 추가해볼게요. tintColor가 변경되었습니다. 그렇다면 배경색은 어떻게 바꿀까요? toolbar.backgroundColor??아닙니다. 바로 barTintColor라는 프로퍼티를 수정해주어야 합니다. 툴바의 배경색이 파란색이 아닌 검정으로 나타난거 보이시나요? 끝
-
[Swift] static 함수와 class 함수! static func vs class func앱등이에게 살충제를 뿌린다./Swift 2016. 7. 20. 00:27
class func vs static func Objective-C를 사용하면 함수를 선언할 때, 플러스(+)부호와 마이너스(-)부호를 붙여준다. +부호는 클래스메소드, -부호는 인스턴스메소드.즉, -부호를 붙인 메소드는 객체를 생성해야만 사용할 수 있고, +부호는 객체가 아닌 클래스를 통해 호출하는 메소드이다. 이와 유사한 작동이 Swift에서도 물론 제공된다.바로 static키워드와 class키워드이다. 생긴건 유사해 보인다.두 키워드의 기능에 대한 설명은 생략하고 차이점에 대해서 짚어보도록 한다. Q. static func와 class func의 차이점은 무엇인가요? 보기엔 static은 struct, enum에서 선언할 때 사용하고 class은 클래스나 프로토콜에서 사용하는것처럼 보이는데요.. 맞..
-
내생애 첫 머지. 컨플릭트 최대 몇 개까지 낼 수 있어요?앱등이에게 살충제를 뿌린다./일기는 일기장에 2016. 6. 30. 00:15
하나의 앱에서 두 프로젝트가 진행되고 있다.. L프로젝트 G프로젝트라고 하고..L프로젝트는 3월부터 8월까지 3명이 개발G프로젝트는 5월부터 8월까지 2명이 개발 오늘 처음으로 이 두 프로젝트를 머지햇는데..컨플릭트 해결이 너무 힘들었다.그 중 하나 원썬의 소리팔투 같은 에러메시지 때문에.. 1시간은 날린 듯 하다. 그 메시지는 swiftc failed with exit code 1 과 유사한 메시지였는데, SomeSourceFile.swift 파일을 찾을 수가 없어서 빌드를 할 수 없다는 것이었다.1. 그래서 global find에서 SomeSourceFile를 쳐봤는데, 아무것도 안나옴2. 그래서 프로젝트 설정파일 project.pbxproj파일에서 SomeSourceFile을 치니깐 다섯군데가 나옴..
-
[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정렬이 끝..