일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 기존 앱
- editTextInputFilter # kotlin #ime #edittext #android #ineoption
- pod install
- List
- Side Menu
- notifychanged
- scrolling tab
- swift
- convert base64
- wkwebview
- DevelopmentRegion
- base64 변환
- GeometryReader
- Xcode 단축키
- 스크롤 탭
- 개발자 면접
- development language
- url 추적
- url 관찰
- swift #swift keychain #keychain 사용법
- DataBinding
- ios
- oberve url
- UIViewControllerTransitioningDelegate
- Android
- transformation.map
- rxjava #kotlin #debounce #rxjava 응용 #rxbinding
- UIPresentationController
- 상단 탭바
- detect url
- Today
- Total
목록IOS (28)
버그 잡이
Keychain이란? Keychain은 iOS에서 제공하는 보안 저장소로, 사용자의 민감한 정보를 암호화하여 안전하게 저장할 수 있게 해줍니다. 이는 UserDefault나 파일 시스템 저장과 같은 다른 저장 방식보다 안전한 옵션을 제공합니다. Keychain Item keychain item 단위로 write / read / delete / update 합니다. keychain item는 attribute를 통해서 key-value 값 뿐만 아니라 부가적인 데이터 저장 및 추가 옵션 설정이 가능합니다. SecItemAdd(), SecItemDelete() 와 같은 함수을 통해서 keychain item을 저장할 수 있습니다. (뒤에 나오는 코드를 보시면 보다 이해가 쉬울겁니다.) Attributes k..
웹뷰를 사용하다보면 네트워크 연결 상태 등의 이유로 최초 페이지가 로드가 되지 않거나 웹뷰 내 페이지 이동중 에러가 발생하는 경우가 있습니다. 이 경우 어떻게 에러를 감지할 수 있는지 알아보겠습니다. 1. 웹 페이지 최초 로딩 에러 감지 WKNavigationDelegate를 활용하여 최초 로딩 에러를 감지할 수 있습니다. import UIKit import WebKit class ViewController: UIViewController, WKNavigationDelegate { var webView: WKWebView! override func viewDidLoad() { super.viewDidLoad() let configuration = WKWebViewConfiguration() webView..
오늘은 Tuist에서 Asset을 한번 추가해보고 Tuist에서 자동으로 에셋 카탈로그를 만들어주는 기능이 있는데 이에 대해서 알아보겠습니다. Asset 추가하기 Asset을 추가하는 것은 간단합니다. Xcode에서 하던 것처럼 Asset.xcasset 파일을 추가하고 이 안에 image, color 등의 리소스를 추가하면 됩니다. 그런데 Tuist는 여기서 한발 더 나아가 ResourceSynthesizer 라는 유용한 기능을 제공해줍니다. ResourceSynthesizer Tuist는 프로젝트를 생성할때 Resources/ 폴더 안에 image, color 등 리소스에 대한 에셋 카탈로그 즉, enum 클래스를 제공해줍니다. Asset에 아래와 같이 이미지 리소스가 있다면 아래와 같은 enum 클래..
지난 시간에 tuist로 프로젝트를 생성하고 모듈을 추가해봤습니다. https://jinsangjin.tistory.com/169 Tuist 삽질기 (1) - tuist란 무엇이고 어떻게 쓰는건가? Tuist Tuist는 Xcode 프로젝트를 관리할 수 있는 툴입니다. 기존에 Xcode에서 target, SPM, info, buid-setting 을 관리하던 것을 tuist라는 툴을 활용해서 할 수 있는 것입니다. Tuist의 장점 1. 모듈화를 할 수 있 jinsangjin.tistory.com 오늘은 기존 프로젝트에 tuist를 적용해보겠습니다. 1. 루트 경로에 Project.swift 파일 생성 터미널로 루트 경로에 접근하고 Project.swift 파일을 생성해보겠습니다. nano Project..
Tuist Tuist는 Xcode 프로젝트를 관리할 수 있는 툴입니다. 기존에 Xcode에서 target, SPM, info, buid-setting 을 관리하던 것을 tuist라는 툴을 활용해서 할 수 있는 것입니다. Tuist의 장점 1. 모듈화를 할 수 있다. - 모듈화를 하면 모듈별 의존성이 낮아지고 재활용성이 높아집니다. -> 유지보수 하기 좋은 코드, 구조가 됨 -> 빌드 속도 향상 2. pbxproj 충돌을 줄일 수 있다. - 협업하다보면 많은 변경 사항을 merge 하는 과정에서 .pbxproj파일 충돌로 고생하는 경우가 종종있는데 tuist를 쓰면 이를 줄일 수 있다고 합니다. Tuist 로 프로젝트 생성해보기 1. Tuist 설치 curl -Ls https://install.tuist...
아래와 같은 메뉴를 한번 만들어 보겠습니다. 햄버거 메뉴 또는 사이드 메뉴라고도 하죠. 0. SideMenu 라이브러리 먼저 SideMenu라는 라이브러리가 있다는 것을 공유드리겠습니다. * SideMenu 깃헙 주소: https://github.com/jonkykong/SideMenu 굳이 직접 만들 필요는 없습니다. 잘 가져다 쓰는게 더 좋을 수도 있죠. 하지만 저는 직접 만들어 보고 싶었습니다. 제가 시도한 2가지 방법을 공유드립니다. 정확히는 첫번째 방법에서 더 발전된 방법이 두번째 방법입니다. 물론 첫번째 방법과 두번째 방법은 개념상 이어지는 부분이 있기 때문에 첫번째 방법도 한번 훑어보시고 두번째 방법을 보시는 것을 추천드립니다. 1. UIViewControllerTransitioningDel..
Static Library에 대한 통념 Static Library는 Dynamic Library보다 앱 용량을 많이 차지한다는 것이 일반적인 생각입니다. 왜냐하면 iOS기준 Static Library는 Library 파일을 복사해서 앱 excutable 파일에 포함시키기고 반면 Dynamic Library는 라이브러리에 대한 참조만 앱의 excutable 파일에 포함시키기 때문입니다. Dynamic -> Static으로 바꾼 결과 = Launch time 개선, App Size 감소(?) 개발중인 iOS 앱의 서드파티 라이브러리 포함 방식을 바꿀 기회가 생겼습니다. 기존은 Cocoapods을 사용중이고 Dynamic 방식이었습니다. 그런데 앱 런치 타임이 느려진 이슈가 있어서 이를 해결하는 과정에서 Dy..
문제 상황 WKWebview의 userContentController에 .add()를 통해서 웹페이지와의 인터페이스를 연결하는데 이때 들어가는 self로 인해 순환참조가 발생한다. webView.configuration.userContentController.add(self, name: "something") 해결 방법 self를 직접 넣는 것이 문제이니, self를 약하게 가지고 있는 객체를 만들어서 대신 넣어준다. (그 결과 순환 참조가 일어나지 않는다) webView.configuration.userContentController.add(WKWebViewLeakAvoider(delegate: self), name: interface.rawValue) class WKWebViewLeakAvoider ..