Crash
-
Swiftlint를 통해서 프로젝트에서 느낌표(!)를 제거해보자앱등이에게 살충제를 뿌린다./Swift 2019. 12. 19. 20:04
간혹 발생하는 크래쉬의 원인. Implicitly unwrapped optional 값이 셋팅 된 뒤로 nil이 될 가능성이 없는 optional이라고 간주되어 !를 붙여주지만,크래쉬로 뒤통수를 친다. 그러면 swiftlint를 통해서 이 느낌표를 제거해보자. .swiftlint.yml파일에서 아래 항목을 추가해주자. opt_in_rules: - implicitly_unwrapped_optional 그러면 우리가 선언한 모든 느낌표에 warning이 발생한다. 하지만 스토리보드에 연결된 @IBOutlet 프로퍼티에는 warning이 발생하지 않는다.얘네들까지 전부 warning을 발생시켜 수정하려면 아래와 같이 lint 옵션을 수정해주면 된다. implicitly_unwrapped_optional: mo..
-
[iOS/디버그일지] UIPageViewController의 setPage에서 크래쉬 발생 (*** Assertion failure in -[_UIQueuingScrollView _replaceViews:updatingContents:adjustContentInsets:animated:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3600..앱등이에게 살충제를 뿌린다./iOS 2018. 2. 9. 16:14
setViewControllers([viewController], direction: .forward, animated: true, completion: { [weak self] (_) in self?.someUIMethod()}) 음.. 크래쉬 발생함 *** Assertion failure in -[_UIQueuingScrollView _replaceViews:updatingContents:adjustContentInsets:animated:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3600.9.1/_UIQueuingScrollView.m:377 원인은 setViewControllers의 completion 클로져가 메인 스레드에서 ..
-
[iOS] numberItemsInSection에서 왜이렇게 크래쉬가?앱등이에게 살충제를 뿌린다./일기는 일기장에 2016. 12. 16. 21:41
UICollectionViewDataSource에서 가장 많이 사용할 2개의 메소드는 collectionView: numberOfItemsInSection:collectionView: cellForItmeAtIndexPath: 일텐데,, numberOfSectionInCollectionView도 많이 사용한다. 그런데 난 UICollectionViewDataSource에 있는 numberOfSectionInCollectionView를 사용하지 않고, UICollectionView에 있는 func numberOfSections() -> Int 라는 메소드를 사용했더니 크래쉬가 났다. 그래서 삽질한시간하고 퇴근하기 전에 기록하고자 씀 kind프로젝트 중..
-
[iOS] 아이패드(iPad)에서 UIActivityViewController를 Present하면 크래쉬가 발생.앱등이에게 살충제를 뿌린다./iOS 2016. 9. 20. 21:06
원인은 간단하다. 아이패드에서는 popover형태로 activityViewController를 보여준다. 따라서 UIActivityViewController의 프로퍼티인 popoverPresentationController에 몇 가지 셋팅을 해주어야 한다. 2,3번째 줄의 코드처럼 popover될 위치를 잡아주어야 한다. sourceView는 위 스샷에서는 공유하기버튼 객체가 될 것이고sourceRect는 버튼의 bounds가 될 것이다. 이 작업을 하지 않으면 아이패드에서는 100% 크래쉬가 발생한다.
-
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..