iOS

[Xcode Build Error] Cocoapods Error

April 04 2023

File not found: /Applications/Xcode.app/Contents/Developer/Toolchains /XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a

UICollectionViewDiffableDatasource 개발기

January 05 2023

후기 RxDataSource 나 기존 UICollectionViewLayout 으로 구현 불가능한 세로/가로 스크롤형 뷰를 생성 가능 이전 버전에 대한 대응 노하우가 쌓인다면 사용해볼만 함 지원하는 OS 버전이 낮을 수록 안정성이 떨어짐 최소버전을 ...

UITabBarController Height 변경하기

December 20 2022

UIStoryBoard를 사용한다면 UITabBarItem을 CustomClass로 적용하기 매우 쉽다. 코드 베이스라면 UITabBarItem이 UITabBarController에서 자체적으로 가지고 있기 때문에 CustomClass를 적용하기가 애매해진다.

[Xcode Runtime Error] outlined copy of

October 04 2022

애플리케이션의 크래시는 운영에 매우 중요한 요소이다. 현재 운영 중인 프로젝트는 99.98% ~ 99.99% 의 크래시로부터 안전성을 유지하고 있다. 주로 Firebase Crashlytics와, Xcode Organizer의 Crashs로 report를 받고 있으며, 예상치 못한...

[AVPlayer] 백그라운드에서 제어

October 03 2022

AVPlayer는 Application의 Life Cycle에 영향을 받는다. UI는 Background에 진입하면 동작을 멈추고, UI가 아닌 기능은 Background에서 동작한다.

Fastlane으로 프로젝트 관리하기

March 04 2022

Fastlane 은 iOS개발을 도와주는 좋은 도구이다. 배포 자동화를 도와주는 툴이며, 많은 iOS개발자들이 사용할 수 있다. 대표적인 장점은 수동으로 배포를 하다 보면 실수를 할 수 있는데, 이를 방지할 수 있는 장점이 있다.

Xcode 13 Column Breakpoints

February 11 2022

구글 번역기로 돌린 번역입니다. 잘못된 오역이 있음을 주의하여 주세요.👀

WKWebView UIAlert Crash

January 28 2022

WKWebView를 사용하다보면 종종 아래와 같은 크래시를 발견할 수 있다. Fatal Exception: NSInternalInconsistencyException Completion handler passed to -[UIViewController webView:runJa...

UICollectionViewCompositionalLayout

January 20 2022

유연하고 시각적으로 항목을 결합하는 Layout이며 iOS 13+ 이상에서 사용할 수 있다. Group이라는 중간 계층이 추가되어 horizontal scroll, group items 등 다양한 화면을 만들 수 있다.

UICollectionViewDiffableDatasource

January 20 2022

TableView(또는 CollectionView)를 그리기 위한 데이터를 관리하고 UI를 업데이트 하는 역할 Data Source와 달리 데이터가 달라진 부분을 추적하여 자연스럽게 UI를 업데이트 UI Data를 관리하고, 변경된 데이터만 UI를 자연스럽게 업데이트 ...

isProtectedDataAvailable

December 16 2021

보호된 파일(키 체인, UserDefaults 등)을 엑세스 가능한지 확인하는 변수이다.

당장 적용하는 SwiftUI의 아이디어

November 07 2021

절차 지향적 프로그래밍은 디버깅, 데이터의 무결성에 단점을 가지고 있다. 또한 코드가 if else로 분기되며 많은 코드들이 조건문으로 쌓이게 됨으로 시간이 지날수록 수정하기 어렵게 되고 유지보수에 불리하게 된다. SwiftUI가 암시하는 것 SwiftUI가 제시하는 아키텍...

Xcode 13.1 Release Notes

October 26 2021

구글 번역기로 돌린 번역입니다. 잘못된 오역이 있음을 주의하여 주세요.👀

[SwiftUI] 선언적 구문과 데이터 주도

October 24 2021

Swift의 장점은 선언적 구분과 데이터 주도 기반에서 비롯된다. SwiftUI 는 UIKit을 구현하는 방법과 완전히 다른 선언적 구문이 도입 되었다.

NSCache

October 17 2021

mutable Collection 으로 key-value쌍을 임시로 저장하는데 사용된다.

Xcode 13

October 01 2021

구글 번역기로 돌린 번역입니다. 잘못된 오역이 있음을 주의하여 주세요.👀

[Xcode] 파일 상단 Created by 변경하기

September 06 2021

Xcode에서 새 파일을 생성하면 상단 헤더가 자동으로 생성되는데, 네이밍을 변경하는 방법을 알아보자. // Created by {my name here} on 8/4/11. // Copyright 2011 __{my company name here}__. All rights ...

[UIViewController] Life Cycle

August 23 2021

loadView() 컨트롤러가 관리하는 뷰를 로드한다. 뷰컨트롤러가 생성되고 순차적으로 완성되었을때만 호출된다.

[스크랩] FairPlay Streaming

August 20 2021

HTTP HTTP Live Streaming(HLS) protocol을 통해 스트리밍 미디어를 장치로 안전하게 전달합니다. 콘텐츠 제공업체, 인코딩 공급업체 및 전송 네트워크는 FairPlay 스트리밍(FPS) 기술을 사용하여 콘텐츠를 암호화하고 키를 안전하게 교환하며 iOS, ...

layoutIfNeeded()

May 23 2021

뷰의 크기가 변경될 때마다 이에 대응하여 하위 뷰들의 크기&위치 변경한다. 이 메소드는 setNeedsLayout과 같이 수동으로 layoutSubviews를 예약하는 행위이지만 해당 예약을 바로 실행시킨다.

setNeedsLayout()

May 23 2021

업데이트 주기에 해당 View와 모든 하위 View를 레이아웃 및 draw 하도록 시스템에 알려주는 역할을 한다.

setNeedsDisplay()

May 23 2021

next drawing cycle 동안 View를 업데이트해야 함을 시스템에 알린다. setNeedsDisplay()메소드 또는 setNeedsDisplay (_ :)를 사용하여 View rendering 을 시스템에 요청한다.

layoutSubviews()

May 23 2021

뷰의 크기가 변경될 때마다 이에 대응하여 하위 뷰들의 크기, 위치 변경한다. auto layout을 사용하면 각 뷰의 autoresizingMask프로퍼티를 설정하여 상위 뷰의 크기가 변경되었을 때 어떻게 대응할 지 규칙을 정할 수 있다. 뷰의 크기에 변경이 발생하면 우선...

[UIView] Drawing Cycle

April 23 2021

UIView클래스는 컨텐츠를 표시할 때, on-demand 드로잉 모델을 사용한다. View를 업데이트하려면 다음 드로잉사이클 때까지 기다렸다가 한꺼번에 업데이트 된다. 비동기 요청을 기록하고 즉시 리턴합니다. 즉각적인 업데이트를 강제하지는 않지만, 다음 업데이트 주기를 기다...

On-demand Resource

January 23 2021

키워드로 태그를 지정하고 태그별로 그룹으로 요청할 수 있는 이미지 및 사운드와 같은 리소스입니다. App Store는 Apple 서버의 리소스를 호스팅하고 다운로드를 관리합니다. 또한 App Store는 on-demand resource를 분할하여 앱 변형을 더욱 최적화합니다.

Bitcode

January 23 2021

Bitcode 는 컴파일된 프로그램의 중간 표현입니다. Bitcode가 포함된 App Store Connect에 업로드하는 앱은 App Store에서 컴파일 및 연결됩니다. - Bitcode를 포함하면 Apple이 앱의 새 버전을 App Store에 제출할 필요 없이...

App Slicing

January 23 2021

슬라이싱 은 다양한 대상 장치 및 운영 체제 버전에 대한 앱 번들의 변형을 만들고 제공하는 프로세스입니다. 변형은 대상 장치 및 운영 체제 버전에 필요한 경우에만 실행 아키텍처와 리소스가 포함되어 있습니다. 앱의 전체 버전을 계속 개발하고 App Store Connect에 업로...

App Thinning

January 23 2021

App Store 및 운영 체제는 최소한의 설치 공간으로 사용자의 특정 장치 및 운영 체제 버전의 기능에 맞게 앱 제공을 조정하여 iOS, tvOS 및 watchOS 앱 설치를 최적화합니다. thinning 이라고 하는 이 최적화를 통해 대부분의 기기 기능을 사용하고 최소 디스크 ...

StringTransform

September 08 2019

문자열 음역(Transliteration) 변환을 제공한다. ```swift public struct StringTransform : Hashable, Equatable, RawRepresentable { public init(_ rawValue: String) public...

CompareOptions

September 06 2019

문자열 처리에 여러가지 옵션을 지정하여 처리할 수 있다. ```swift extension NSString { public struct CompareOptions : OptionSet { public init(rawValue: UInt) public static ...

ComparisonResult

September 04 2019

ascii 를 기준으로 정렬 되는 방식을 나타낸다.

nil, Nil, NULL, NSNull 대한 차이

August 23 2018

nil / NULL / Nil 은 Objective-C 에서 사용할 수 없는 번지를 가리키는 포인터의 부재 Swift에서는 모두 nil로 처리한다.