1월, 2023의 게시물 표시

[Xcode LLDB 빌드 이슈] : warning: libobjc.A.dylib is being read from process memory. This indicates that LLDB could not find the on-disk shared cache for this device. This will likely reduce debugging performance.

이미지
  [Xcode LLDB 빌드 이슈] : warning: libobjc.A.dylib is being read from process memory. This indicates that LLDB could not find the on-disk shared cache for this device. This will likely reduce debugging performance. 안녕하세요. 물먹고하자 입니다 :) 최근에 프로젝트 Build시 LLDB 관련 warning 이 발생하면서,  Build가 딜레이 되는 현상이 발생하더군요. 간단하게 해결하는 방법 전달드립니다.   문제 해당 warning 발생하며, Build 후 실제 디바이스에서 실행이 느린현상 발생 Xcode > Setting... > Locations > Derved Data (이동) DerivedData > 내부 파일 전부 삭제 이렇게 Clean 작업 후 Build 하면 LLDB warning 사라집니다.   마무리 해당 작업은 보통 프로젝트나 SPM 꼬였을때, Clean 작업으로 많이 하는데 , 같은 해결법으로 처리가 가능합니다. 이건 다른 얘기인데,  작년부터 계속 용량을 보고있는 상황인데요. Xcode 용량은 작은데,  시뮬레이터, 캐시, 아카이브 등등 이게 270GB가 말이 되나... 시스템용량은 또 160GB임. 1TB인데도 부족해지는 느낌이네요. 그냥 그러려니 하고 있는데, 아무리봐도 이상한 느낌이네요. 오늘은 끝. 즐거운 코딩 되세요~

[iOS] @discardableResult 알아보기

이미지
   [iOS] @discardableResult 알아보기 안녕하세요. 물먹고하자 입니다 :) 오늘은 @(annotation or property wrapper) 중 @discardableResult 알아보려고 합니다. Java를 먼저 해서 그런지 annotation 이라는 단어가 익숙하긴한데,  Swift에서는 @를 property wrapper 로 부르는 것 같습니다. (거의 annotation이라 부르면, 다른언어 개발자들도 그러려니 알아들음 ㅋㅋ..)   알아보기 사전적 의미 먼저 확인하기 삭제 가능 결과? Git에서 discard 는 폐기니깐 "결과를 폐기할 수 있다." 대략 이렇게 알고 있으면 아마 이해될것 같다. 샘플소스 설명 Sample1Func() 결과를 반환한다고 Warning 이 뜸. Sample2Func() 결과를 반환하지만, Warning이 무시됨. 이럴때 사용한다고 생각하시면 될 것 같습니다. 실제 코드 부분인데, VM Closure 지원 으로 외부에서 사용하든 말든 지원해주고, Warning 뜨는게 싫어서 처음으로 사용해봄. 실제 호출부 Warning 없음.   마무리 오늘은 @discardableResult 사용방법에 대해 알아보았습니다. @( annotation)은 Xcode 내에서 "Jump To Definition" 도 안되고, Apple Document에도 안보이던데, 어떨때 쓰는지 어떻게 사용되는지 문서상으로 궁금한데, 찾아보기가 어렵다. "@discardableResult" 검색해봐도 블로그 내용 밖에는 나오지 않는다. 아니면 내가 못찾는건가.. ??? 궁금한 @ property wrapper 들이 있어서 좀더 찾아봐야할 것 같다. 오늘은 이만 즐거운코딩 되세요~

[iOS] HTTP Request HEAD HTTP/2 대응

이미지
   [iOS] HTTP Request HEAD HTTP/2 대응 안녕하세요. 물먹고하자 입니다 :) 새해복 많이 받으세요. 올해도 어김없이 바쁘게 지내고 있는데, 글쓰던걸 마무리 못하고 새로운글을 먼저 작성하게 되었습니다.   문제점 기존에 HTTP Reqeust 중 HEAD 로 요청하는 API가 존재하는데, Protocol : HTTP/1.1 과 HTTP/2 때 Response header 정보에 키값들이 소문자 로 변경 되었습니다. 그 외에 기능강화가 주목적이긴한데, header의 키값들이 소문자로 변경 되었으니 수정이 필요했습니다. 참고 :  https://luavis.me/http2/http2-overall-operation   기존코드 Apple 참고 :  allHeaderFields , iOS 2.0 거의 iOS 8.x 쯤 도입 후 변경하지 않고 사용하던 방식이였는데, allHeaderFields 의 값을 Key/Value 로 빼서 쓰는정도로만 사용하고 있었다. (키값이다보니 대소문자를 확실하게 가림)   변경코드 Apple 참고 :  value(forHTTPHeaderField:) , iOS 13.0 HTTP 규약에 맞춰 헤더필드명의 대소문자를 구분하지 않는 함수 를 제공해 준다. 이를 통해 HTTP/1.1 지원 서버와 HTTP/2 지원 하는 서버 둘다 체크해보니 정상적 으로 값을 뽑아올수 있었습니다.   마무리 솔직히 업무하면서, iOS 신기술 대응 필요점들은 빠르게 진행을 하긴하는데, 서버규약/프로토콜 변경등은 일이 터져야 알게되는것 같다. 그래도 서버개발팀에서 먼저 확인해 주셔서 생각보다 빠르게 대응할 수 있었습니다. 오늘은 끝. 즐거운 코딩되세요~