본문 바로가기

iOS189

[iOS Issue] Multi thread 환경에서 Dangling Pointer Crash 이슈 앱의 Logging을 담당하는 모듈에서 multi thread 환경에서 동작 시 잦은 Crash가 발생하는 이슈가 생겼다. 결론만 말하자면 원인은 Singletone 클래스에 있는 Thread-safety 처리가 되어있지 않은 stored property에 여러 스레드가 동시에 setter에 접근을 하면서 Dangling pointer 크래시가 발생했다. 이슈 상황은 크게 2가지 였다. Unknown Object Release 이 경우는 Setter가 여러 스레드에서 동시에 불리면서 이미 Retain Count가 0임에도 불구하고 추가로 Release를 시도하면서 생기는 크래시였다. 다음과 같은 상황으로 보면 될 것 같다.stored property에 이미 instance가 존재하는 중 (retain c.. 2024. 5. 5.
[iOS] '==' vs '===' https://ios-development.tistory.com/393 [iOS - swift] == 와 === 의 차이 (+ Equtable) `==` vs `===` a == b: a의 값과 b의 value가 같은지 비교 let value1 = 1 let value2 = 2 print(value1 == value2) // false a === b: a가 참조하고 있는 인스턴스와 b가 참조하고 있는 인스턴스가 같은지 비교 swift에서는 크 ios-development.tistory.com == vs === == 각 변수의 Value를 비교한다. Stack 영역의 값을 비교 Equatable을 채택해서 static func ==() method를 선언하면 사용할 수 있다. === 각 변수가 참조하고 있.. 2024. 3. 17.
[iOS Issue] command codesign failed with a nonzero exit code 동일한 팀의 인증서 2개가 키체인에 동시에 존재하는 경우, Xcode에서 어떤 인증서를 써야할지 몰라서 빌드 시 생기는 이슈 키체인에서 Apple Development 인증서를 전부 삭제 Xcode -> Setting -> Account에서 변경을 원하는 Team 계정을 더블 클릭 왼쪽 하단의 '+' 를 눌러서 Apple Development 인증서를 새로 생성한다. (3-1 스크린샷 참조) 맥북 키체인에 접속해보면 새로운 인증서가 생성되었을 건데, 중요한건 '항상 신뢰'로 바꾸면 안되고 '시스템 초기 설정 사용'으로 놔두어야 한다. Xcode 완전 종료 후 새로 실행하고 Project파일의 Signing Certificate에 보면 Updating provisioning profile이라고 뜨는데 업데.. 2024. 3. 17.
[iOS] OOP와 POP는 어떤 경우에 써야 할까 (고찰) 근래에 OOP와 POP는 각각 어떤 경우에 사용해야하는 가에 대한 고민을 해본 적이 있다. 사실 그냥 막연하게 Swift는 POP 개발을 지향해! 라고만 알고 있지 실제로 어떤 경우에 사용해야하는 가에 대한 개인적인 기준이 없는 듯 하여 그에 대한 개인적인 생각을 적어본다. (OOP와 POP라고 표현하였지만 정확히는 'OOP의 상속'과 'Protocol의 초기구현'이라고 봐도 될듯 하다.) OOP vs POP https://skytitan.tistory.com/550 [Swift] 프로토콜 지향 프로그래밍 (Protocol Oriented Program) 프로토콜 지향 프로그래밍 스위프트는 프로토콜 지향 언어(Protocol-Oriented Language)이다. 스위프트는 대부분 구조체로 기본 타입이 .. 2024. 3. 17.