iyOmSd/Title: Swift 106

[Swift] WWDC24 Explore Swift Performance(1)

WWDC24 Explore Swift Performance를 보고 정리한 글입니다! 🙇‍♂️ C언어에서는 깔끔한 기계어 코드를 얻을 수 있지만 Swift는 그렇게 간단하지 않습니다.코드를 잘 못 작성하면 메모리가 완전 난잡해집니다.대신 Swift는 C에서 제공하지 않는 다양한 추상화 기능과 클로저, 제네릭 등을 지원합니다 이러한 추상화 기능은 간단하게 구현되어 있지 않으며 명시적으로 malloc을 호출하듯이 명확한 비용을 알 수 없습니다What is Performance?만약 어떤 도구가 있어서 프로그램을 그 도구에 집어넣으면 하나의 숫자가 출력되고 그 숫자로 프로그램의 성능을 모두 알 수 있다면 얼마나 좋을까요Safari의 성능 점수가 9.2라고 출력되는것 같이 표시하고싶지만 그렇게 할 수는 없습니다..

iyOmSd/Title: Swift 2024.11.09

[Swift] Xcode16 빌드시 CUICatalog initWithName:fromBundle:error: 런타임 에러

안녕하세요오늘은 간단한 에러처럼 보이지만 디버깅하기 힘든 에러를 접한 경험을 공유하려합니다!Xcode16이 나와서 swift6을 대응하려다가 만난에러입니다! Xcode15를 사용했을때 문제없이 빌드됬고 시뮬레이터, 실기기 모두 정상동작하는 상태에서 Xcode16을 다운받고 빌드했을 때 iOS16, iOS18인 기기에서는 문제없이 잘 동작했으나 iOS17인 경우에 런타임에서 죽는 현상을 발견했습니다. 원인도 모르겠고 정말 막막해서 엄청 알아보던 와중 드디어 한줄기의 빛처럼 발견한 글이 있었습니다.정확한 원인과 답은 찾지못했지만 모듈이름과 뭔가 연관있다라는 추측을 내포하는 글을 발견했습니다. 제 경우도 이에 해당할지도 모른다는 희망을 갖고 모듈이름을 바꾸고 적용한뒤에 실행했습니다.저는 "UI" 모듈을 사..

iyOmSd/Title: Swift 2024.11.07

[Swift] Python을 이용한 Excel -> Json 맵핑 스크립트 만들기

다국어를위해 로컬라이징을 사용하거나 어떠한 단어 혹은 정책들은 액셀로 관리하는 경우가 많은데요개발자 입장에서는 이파일을 보고복사해서 형식에 맞게 다시 옮겨적어서 전처리 과정을 거쳐서 데이터로 사용해야합니다.물론 이과정에서 누락 혹은 실수가 일어나서 휴먼에러가 도중에 생기기도하죠 이러한 과정을 자동화 시켜서 알아서 파일을 뽑아줄 수 있도록 스크립트를 작성해볼거에요전 파이썬을 잘모르기때문에..기본 코드는 지피티 선생님이 도와주셨습니다! 👏 우선 파이썬을 설치해야겟죠 터미널을 실행시키고 파이썬 라이브러리 설치합니다pip3 install pandas openpyxl 실행은 아래와 같은 명령어로 이뤄집니다(경로 체크해주세요!)python3 # python3 excelToJson.py Keyword.xlsx 액..

iyOmSd/Title: Swift 2024.09.29

[Swift] Vision Framework 비슷한 이미지 찾기

안녕하세요이번에는 2개의 사진을 두고 이 사진들이 서로 얼마나 비슷한지 보여주는 기능을 구현해볼거에요 Vision을 검색하면VisionKit도 보일텐데요 처음에 보면 헷갈릴만한 프레임워크들이네요 Vision컴퓨터 비전 알고리즘을 적용하여 입력 이미지와 동영상에 다양한 작업을 수행합니다. VisionKit디바이스의 카메라를 사용하여 환경 또는 앱이 표시하는 이미지에서 정보를 식별하고 추출합니다. 라고 정의되있네요이미지를 분석해주는게 Vision, 카메라를 써서 스캐너같이 사용하는것이 VisionKit 정도로 간단히 이해하고 넘어가봅시다!  저희가 사용할건 Vision 프레임워크입니다!Core ML을 사용하여 이미지를 분석해주고 그 특성들을 비교해서 얼마나 비슷한지 측정 할 수 있어요  다양한 요청들이 있는..

iyOmSd/Title: Swift 2024.08.27

[Swift] EventKit Reminder 미리알림 데이터 이용하기

안녕하세요~오늘은 미리알림 데이터를 이용한 개발을 하려고합니다! 미리알림은 아이폰 기본앱으로 투두리스트같이 할일을 미리 기록해서 리마인드받을 수 있는 앱이에요 EventKit을 이용하면 사용자의 캘린더 혹은 미리알림 데이터에 접근할 수 있어요 제일 중요한 타입으로EKEventStore가 있어요캘린더나 미리알림 데이터에 접근할때 이객체를 통해서 이뤄집니다 사용자의 데이터에 접근하기때문에 권한을 요쳥해야합니다plist에 NSRemindersFullAccessUsageDescription 값을 추가해주세요!그 다음에 아래와같이 권한요청을 할 수 있습니다.let store = EKEventStore()let allPredicate = store.predicateForReminders(in: nil)store.r..

iyOmSd/Title: Swift 2024.07.26

[Swift] iMessage 필터링 ILMessageFilterExtension (스팸 차단)

메시지 필터링을 개발할 기회가 생겨서 학습한 것을 기록하려고해요 먼저 프로젝트를 생성하고 file > new > target에서 Message Filter Extension을 클릭하면 이렇게 파일이 생성됩니다! 기본적인 템플릿코드는 작성돼있고 설명도 같이 써져있어요 각 함수의 역할을 알아봅시다! func handle(_ capabilitiesQueryRequest: ILMessageFilterCapabilitiesQueryRequest, context: ILMessageFilterExtensionContext, completion: @escaping (ILMessageFilterCapabilitiesQueryResponse) -> Void) { let response = ILMessageFilterCap..

iyOmSd/Title: Swift 2024.02.27

[Swift] TimeZone과 Locale

여러나라에 배포할 서비스를 개발하면서 헷갈렸던 개념을 정리해보려고해요 TimeZone 특정 지정학적 지역과 관련된 표준 시간법에 대한 정보. 지정학이란 지리적 환경과 정치현상의 관계를 연구하는 학문이라고하네요 다른나라를 여행갈 때 흔히 겪는 시차를 계산할 때와 같아요 국가별로 고유한 TimeZone을 사용하고있어요 문서를 보면.. TimeZone은 시간대의 동작을 정의합니다 TimeZone값은 지정학적 지역을 나타내고 이러한 값에는 해당 지역에대한 이름이 존재합니다. TimeZone값은 그리니치 표준시(Greenwich Mean Time)라고 부르는 GMT에서 더하거나 뺀 시간적 차이 입니다. swift TimeZone타입은 current와 autoupdatingCurrent 2가지 함수를 제공합니다 ..

iyOmSd/Title: Swift 2024.01.30

[Swift] NSTextAttachment, 이미지 텍스트화

NSTextAttachment 요타입에 대해 알아보려합니다~! ???: 보기 드문타입인거같은데 어떻게 이 타입을 알게 됐나요..? 🤯: 요구사항을 보고 이건 클릭이 안 되겠지 생각하고 간략히 속성을 보여주는 뷰구나~ 하고 Label 컴포넌트로 만들어놨는데... 추후에 특정타입만 클릭이 가능하고.. 특정 타입에 대해선 이미지까지 앞에 붙어야하는 스펙이더라구요... 이걸 버튼으로 바꿔야하나.. 말아야하나...이미 구현해놔서 건드려야하는게 많아서 Label에 이미지를 넣을 순 없을까 하던중 찾게 된 타입이죠 정의! attributed strings and related objects의 첨부 특성값이라네요 정의만 보고는 먼 소린지 모르겠네요! NSTextAttachment는 NSAttributedString에서..

iyOmSd/Title: Swift 2023.10.31

[Swift] Multi Line Tag View 그리기

SwiftUI만 하다가 UIKit을 하게될 일이 생겼는데 요구사항중하나가 뷰를 크기에 맞게 여러줄로 표현해주는 뷰에요 테그를 표현하는 뷰같은 곳에 많이 쓰이는 UI로 알고있어요 결과물 부터 보시죠! 네 이런뷰입니다.. SwiftUI로도 이뷰는 어떻게 만들어야할까 깊은 고뇌를 해봤습니다... 스유는 레이아웃 건드는게 좀 어렵더라구요 🤯 우선 UIKit으로 개발해야하니깐 UIKit관점에서 쉬운방법으로 구현해봤습니다! 이런뷰를 구현할때 많은 방법이 존재하겠지만 단순한 방법으로 뷰의 frame을 계산해서 구현하는 방식을 선택했어요 전체코드는 아래와같아요! class MultiLineTagView: UIView { private let horizontalSpacing: CGFloat private let vert..

iyOmSd/Title: Swift 2023.09.30

[Swift] Core Motion (feat. 흔들기 감지센서 개발)

안녕하세요 이번에는 아이폰 흔들기를 감지하는 기능을 구현해볼려고합니다! 흔들기를 감지하는건 기본적으로 UIResponder에 있는 메서드에서 쉽게 이벤트를 받아서 처리해볼 수 있어요 UIResponder니까 UIView, UIWindow, UIViewController... 어디에든 많이있죠 시점에따라서 began, ended가 있어서 원하는시점에 실행할수있고 취소했을때도 보이네요 이벤트가발생하면 UIEvent.EventSubtype이 전달되는데 폰을 흔들었을떄 motionShake이벤트를 받게되요 public override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) { if motion == .motionShake {..

iyOmSd/Title: Swift 2023.04.19