iOS/Swift
-
메모리 덤프에 남는 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") 를 추가한다.
-
DateFormatter가 쓰기싫어서 DateFormatStyle을 알아본다iOS/Swift 2022. 6. 28. 00:17
yyyy-MM-dd hh:mm:ss DateFormatter가 쓰기싫었다. 더 쉬운 방법이 없을까? 싶어서 찾아봤습니다.... 일단 어떻게 나오는지 궁금한 샐옴? print문은 아래의 순서입니다. 어떤 날짜style로 표기했는지 날짜 style + timeStyle: .standard 날짜 style + timeStyle: .omiited 날짜 style + timeStyle: .shortened 날짜 style + timeStyle: .complete 더보기 omitted 오후 9:34:42 6/27/2022 오후 9:34 오후 9:34 오후 9:34:42 GMT+9 comple 2022년 6월 27일 월요일 오후 9:34:42 2022년 6월 27일 월요일 2022년 6월 27일 월요일 오후 9:34..
-
info.plist를 옮길 때.iOS/Swift 2022. 5. 20. 20:35
눈물의 역사.. 프로젝트를 하며,, 파일 정리를 위해 Info.plist를 옮겼다가 해결하는데 시간이 얼마나 들었는지 모른다.. build input file cannot be found라는 오류가 뜨는데..... STEP 1,2를 하면 해결 할 수 있따. 방법 STEP 1. TARGETS.BuildSettings.Packaging에서 info.plist File의 경로를 변경한다. STEP 2. Navigator창에서 info.plist선택 후, Inspector의 File Inspector창을 선택한다. Location주변의 폴더모양을 눌러서 아래와 같이 Info.plist파일을 choose
-
IDEWorkspaceChecks.plist?iOS/Swift 2022. 5. 19. 18:42
넌 누구야? 프로젝트.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist 에 위치한 녀석,,, 뭐하는 녀석인지 그냥 보면 알기 힘들다. 요약 Repository에 커밋하면 좋다고 합니다. 그래서 뭐 하는 애인데요? Xcode 9.3 adds a new IDEWorkspaceChecks.plist file to a workspace's shared data, to store the state of necessary workspace checks. Committing this file to source control will prevent unnecessary rerunning of those checks for each user opening the workspace...