iOS
-
메모리 덤프에 남는 String 없애기iOS/Swift 2025. 8. 5. 18:18
회사에서 ISMS-P인증을 한다... 모의 해킹에서 메모리 덤프에 사용자의 ID, PW가 평문으로 노출됨! 하지만,,, 로그인 하면 textfield.text = nil 처리를 하고 있었고, 해당 정보는 local scope에만 존재하고 있었다. 원인이 무엇일까!예상 원인은 두가지로 추렸다... TextField.text가설사용자의 ID, PW는 Textfield.text를 통하여 String으로 값을 가져온다.이 때 지역변수에 이 값을 선언하면 Heap메모리에 이 값이 적재될 것이고, Stack에 있는 String의 주소를 해제하더라도ARC가 바로 Heap의 String의 value를 해제해주지 않을 것이므로, 메모리 덤프에서 ID, PW가 노출될 것! 해결Textfield Delegate를 사용하여,..
-
error: Cycle inside {$Project}; building could produce unreliable results.iOS/Swift 2025. 7. 21. 10:43
Cocoapods -> SPM으로 전환하다가 발생한 에러.Firebase를 사용하는 관계로, run script에 input파일이 여러개 추가되고 실행해야 했다 (링크) Firebase Crashlytics 시작하기새로운 Firebase Studio 기능부터 AI 통합 방법까지 I/O에서 발표된 모든 내용을 확인해 보세요. 블로그 읽기 의견 보내기 Firebase Crashlytics 시작하기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로firebase.google.com 이 때 제목의 에러가 발생했는데, 여러 LLM은 할루시네이션을 하더라,,,결국 문제는 buildPhase의 순서가 문제였다.생각하면 곧 알수있는 문제였음.... LLM 의존 문제가 심각하다. build 산출물이 생성된 후 run sc..
-
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONSiOS/Swift 2024. 7. 29. 15:54
XCode15에서 쓸 수 있는 기능!이제야 눈치챘다... ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = true 로 할 경우이를 통하여, asset의 Color, Image를 property에 접근하듯 사용 할 수 있다!말인 즉, asset이 제거되었을 때, 참조할 asset이 사라졌으므로, compile time에 build error를 방출 할 수 있게된다!!!해당 설정으로 필요한 asset이 제거되거나, 네이밍이 변경됨을 compileTime에 감지 할 수 있게된다! ( 근데 Asset내부의 컨텐츠 네이밍과 변수화 된 네이밍이 완전 일치하지는 않는다. ) 위 옵션으로 생성된 property는 자동 생성된 GeneratedAssetSy..
-
fastlane을 쓰고, TCA 버전업을 했는데 빌드가 안된다고요?iOS/Swift 2024. 7. 25. 17:07
TCA 0.55.0 -> 1.5.6 으로 업데이트를 했습니다.Macro에 대한 Popup이 노출되더라구요빌드머신을 따로 두고 fastlane으로 빌드 시, 클린 빌드, derivedData, SPM등 모든 내용을 제거하고 빌드한다면, Macro 허용 팝업이 다시 발생 할 것이고, 그로 인하여 fastlane은 빌드를 못하게 됩니다.https://forums.swift.org/t/tcas-macros-and-ci-cd/71104/2 같은 링크에서도 이러한 경우에 대한 해결 방법을 제시합니다.fastlane은 어떻게 하느냐? xcargs: '-skipMacroValidation' 를 추가해 줍니다. https://docs.fastlane.tools/actions/build_app/ 를 참조하시고,..
-
[swift] "yyyy-MM-dd'T'HH:mm:ss"형식 String -> Date dateFormat 변환 실패iOS/Swift 2023. 12. 14. 10:11
서버로부터 "yyyy-MM-dd'T'HH:mm:ss"형식의 String을 전달받는다. let df = DateFormatter(format: "yyyy-MM-dd'T'HH:mm:ss") df.timeZone = TimeZone(abbreviation: "GMT+9") 의 설정으로 변환한다. 그런데, 간혹 어떤 해당 DateFormatter를 사용하여 String -> Date 변환이 실패하는 경우가 있다. 보통은 사용자 디바이스의 Locale 설정에 따라서 문제가 생기는 걸로 보인다. 내 경우, 디바이스의 Locale 설정이 미국 iPad에서 발생했으며, OS버전을 가리지 않았다. 해결법은 간단하다. df.locale = Locale(identifier: "en_US_POSIX") 를 추가한다.
-
Cocoapods 사용 시 , Xcode14.3 achieve 문제 해결 방법iOS 2023. 4. 4. 16:06
현상 : Fastlane의 match 혹은 provisiningProfile의 적용이 정상적으로 작동하지 않음. Xcode에서 Achieve 시, build Phase에서 cocoapods 관련 script에서 Error 발생 원인 : Xcode 14.3 에 대한 대응이 Cocoapods 1.12.0 에서 적절하지 않음. 정상 해결 방법: cocoapods의 다음 버전이 나오길 기다림 ( 해당 에러에 대한 내용은 cocoapods master에 merge 됨.) 임시 적용: https://github.com/flutter/flutter/issues/123852#issuecomment-1493232105 의 내용을 임시 적용 - podfile에 내용을 추가 post_install do |installer|..
-
Xcode 14에서 증가한 용량 줄이기iOS 2022. 11. 29. 11:00
현상 iOS16을 지원하며, Xcode14를 사용하기 시작했다. 많은 문제가 있었지만, 그 중 앱의 용량이 갑자기 치솟는 현상이 발생하였다. 해당 현상의 원인으로는 bitCode를 사용하지 않게되면서, build process 중 binary simbol stripping을 애플이 해주지 않게 되었기 때문. 해당 내용의 상세한 설명은 해결방안 1의 링크를 참조할 수 있다. 해결 방안 이를 해결하기 위한 2가지 Reference를 참조하였다. binary simbol stripping https://www.emergetools.com/blog/posts/how-xcode14-unintentionally-increases-app-size asset image optimazation https://sowenj..