일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- delegation
- human interface guidelines
- SWIFT
- 독서후기
- @available
- Mock
- xcode
- roundingMode
- 스위프트
- Codegen
- Modality
- Info.plist
- Failed to register bundle identifier
- View Life Cycle
- Navigation
- IOS
- viewcontroller
- 독후감
- NotificationCenter
- 책후기
- contentInset
- mvvm
- Structures and Classes
- 스타트업주니어로살아남기
- 아이폰
- UIResponder
- SWIFTUI
- 부트캠프
- NumberFormatter
- 야곰아카데미
- Today
- Total
목록분류 전체보기 (144)
호댕의 iOS 개발

딥링크를 사용하면 앱의 접근성을 올릴 수 있다. 단순히 사용자가 링크를 눌렀을 때 앱만 실행되고 링크에 해당하는 컨텐츠가 열리지 않는다면...? 해당 링크의 효용성은 아주 떨어지게 된다. URL Scheme 그래서 가장 초기 형태로 나온 딥링크가 바로 URL Scheme이다. 이는 별다른 제약이 없이 개발자가 원하는 Scheme을 정할 수 있다. (Info.Plist에서 URL Types를 지정하면 됨 => {입력한 URL Scheme}:// 이런 식으로 사용 가능) 하지만 이를 사용하게 되면 앱이 설치되어 있지 않은 경우 앱스토어로 연결해준다던지 어런 동작은 불가능하다. 그리고 Scheme은 Unique하지 않기 때문에 같은 Scheme이 존재할 수도 있다. Universal Links 이런 단점들을 ..

무신사에서도 보면 상품 상세 화면이나 이벤트 화면에서 캡쳐를 하는 경우 상단에 공유를 할 수 있도록 하는 UI를 제공하고 있다. 이를 구현하기 위해선 사용자의 캡쳐 이벤트를 받아서 이때 위 이미지처럼 UI를 띄워줘야 할 것이다. 그럼 어떻게 이런 이벤트를 받을 수 있을까?! 캡쳐 이벤트 받기 이는 키보드가 나왔다가 dismiss되는 이벤트를 받는 것과 거의 유사하다. NotificationCenter를 활용하면 된다!! 해당 이벤트의 이름은 아래 프로퍼티에 정의되어 있다. UIApplication.userDidTakeScreenshotNotification 이름만 봐도 스크린샷 찍었을 때 이벤트를 알려주게 생겼다. 이후는 NotificationCenter를 사용하는 것과 동일하다. 캡쳐 이벤트를 인식했으..

App Group은 왜 필요한 것일까? 기존 앱과 Extension의 경우 각자 서로의 데이터 컨테이너를 가지고 있으며, 이에 직접 엑세스할 순 없다. 하지만 데이터 공유를 활성화 할 수는 있다! 바로 AppGroup을 통해서 말이다. 이를 활성화하게 되는 경우 NSUserDefaults API를 사용해서 사용자의 기본 설정에 대한 값에 엑세스를 할 수 있다. 즉 앱에서 UserDefaults로 저장해놓은 값을 Extension에서도 접근이 가능하게 되는 것이다. Extension Scenarios App Extension Programming Guide: Handling Common Scenarios App Extension Programming Guide developer.apple.com 위 그림처..

회사에서 이번에 위젯 도입을 고려하고 계셔서 호기롭게 해보고 싶다는 생각이 들었다. 아니 회사 프로젝트에서 SwiftUI도 사용해볼 수 있고 잠깐 찍먹만 해봤던 위젯을 개발해보면 너무 재밌을 것 같았기 때문이다. (지금도 위젯 재밌긴 하다... 하지만 지금 만난 문제는 재미없고 당황스러움밖에 없었다... ㅋ) 위젯에 대한 간단한 도입 방법과 설명은 요 글에서 이미 작성해놨다! (첨에는 기억이 안났는데 읽다보니 새록새록... 역시 기록은 중요하다) https://ho8487.tistory.com/61 [iOS] Widget 알아보기 (+ AppExtension) iOS 14 이후부터 위젯 기능을 사용할 수 있게 되었다. (물론... 안드로이드에선 진작 있긴 했지만... ) 위 아이패드 화면에서 흰 색 테두..

작년 10월에 테니스를 시작하고 지금까지의 장비 결산이다. (아직 1년도 안 된 테니스의 아주 주관적이고 비전문적인 장비 리뷰임!!!) 지금까지 구매한 장비 목록이다. 바볼랏 퓨어에어로 2023 300g 요넥스 이존 2022 300g 요넥스 브이코어 2021 300g 윌슨 블레이드 V8 18 X 20 305g Saber 연습용 라켓 300g 굵직한 건 이 정도이고 가방, 물병, 보호장비 등등하면 많이도 샀다... ㅎㅎㅎ 역시 사이클 / MTB 탈 때 장비병 어디 안 간다... ㅋㅋㅋ 그래도 테니스 장비는 자전거보단 훨씬 싸니깐.. 이라며 위안을 삼고 있다. 그리고 중고거래로 안 쓰는 라켓은 팔아서 Saber 포함 3자루이니 생각해보면 엄청 지출이 많진 않았던 것 같기도 하다. 요넥스 이존 2022 100..

갑자기 앱을 실행하려고 하는데 요런 에러가 잔뜩 떴다. There is no XCFramework found at ~ 처음 이 문제를 만나면 굉장히 당황할 수 있다. 왜 얼마 전까지 정상적으로 빌드되던 소스코드들이 문제가 생기는거지 하고 말이다... 이전까진 전혀 문제 없이 빌드가 됐다면 File > Packages > Reset Pachage Caches를 해보자! 이러면 생각보다 간단하게 해결할 수 있다. 현재 Xcode 버전을 14.3을 사용하고 있는데 Rosetta를 끄고 테스트할 일이 있었다. 그래서 여느 때와 같이 Finder > 응용 프로그램으로 가서 Xcode를 우클릭한 후 정보 가져오기를 눌렀다. 아니 그런데 Open using Rosetta가 갑자기 사라진게 아닌가...?? 뭐지 싶어서..

GitHub Actions를 도입하게 된 배경 테스트 코드를 짜더라도 다른 작업으로 바쁘게 되면 테스트 코드가 방치될 수 있다. Xcode에서 빌드를 하더라도, 테스트를 따로 돌려보지 않으면 테스트 코드에 문제가 생겼는지 아닌지 알 수 없기 때문이다. 그래서 여기 저기 작업을 하고 코드를 수정하다보면 어느새 실패하는 테스트 코드가 속속 생겨날 수 있고, 아예 테스트 코드가 빌드조차 되지 않을 수 있다 😱 따라서 코드의 품질 향상을 위해 도입한 테스트 코드가 오히려 짐덩이처럼 될 수 있다고 생각한다. 어떻게 하면 매번 테스트를 돌려보지 않으면서도 테스트 코드의 장점을 가지고 갈 수 있을까 고민을 하다가, GitHub Actions를 통해 테스트실행을 자동화하고 유지보수를 용이하게 하는 방법을 생각해봤다. ..

멋쟁이 사자처럼 앱스쿨 3기에서 좋은 기회로 Git / Github 관련 특강을 맡게 되어, Git 관련 내용을 총정리해보았다. (물론 모든 명령어를 다루진 않지만 기본적으로 많이 사용하는 명령어들과 Git의 등장 배경 등을 정리했다) 일단 Git이 무엇이고 왜 등장했는지 살펴보자. Git은 뭘까? 일단 사전적 의미에 대해 살펴보자. 버전을 편하게 관리할 수 있는 도구 따라서 Version Control System 중 하나인 것이다. 그렇다면 굳이 왜 Git이란 툴로 버전을 관리하게 된 것일까? 이는 협업을 할 때 조금 더 편리하기 위해서일 것이다. 동시에 다른 작업들이 병렬적으로 진행 특정 코드에 문제가 생겨 이전 코드로 돌아갈 수 있음 다른 사람들이 코드를 어떻게 작성했는지 히스토리를 확인하거나 코..