1. Canonical Mapping 유니코드에는 canonical equivalence라는 것이 존재한다. canonical equivalence란, 한 가지의 추상적인(abstract) 문자를 나타내는 문자나 문자열 사이의 기본적인 동등함(fundamental equivalency)을 말하며, 올바르게 표시되었을 때는 똑같이 표현되고 동작해야 한다. 한 문자에 대해 여러 가지 canonical equivalence가 존재하는 것도 가능하다.예를 들어 문자 Ç(U+00C7)와 문자열 C(U+0043) + ◌̧(U+0327)는 서로 같은 추상적인 문자를 나타내므로 canonical equivalence이고, 문자 Ω(U+03A9)와 문자 Ω(U+2126)은 서로 똑같은 추상적인 문자를 나타내므로 cano..
1. 기본 개념 코어 데이터의 뿌리는 NeXT 의 엔터프라이즈 객체 프레임워크 (EOF) 에서 찾을 수 있다.이 프레임워크는 객체를 관계형 데이터베이스로 매핑할 수 있다. 관계형 데이터베이스를 사용하면데이터베이스에 종속적인 로직을 구현하는 대신비지니스 로직을 객체에 구현하게 되므로 적은 양의 코드로 같은 기능을 구현할 수 있다.이를 통해 DB 요구사항보다 앱의 요구사항을 구현하는 데 더 집중할 수 있다. 코어데이터는 애초에 Mac OS X 상에서 단일 사용자를 지원하도록 만들어졌고, 내장 관계형 데이터베이스인 SQLite 에 데이터를 저장한다. 코어 데이터는 다음과 같은 기능을 포함한다.- 시각적인 모델 편집기를 통해 데이터 객체를 모델링한다.- 객체의 스키마가 변경될 경우 마이그레이션 도구를 이용해 처..
1. Frame & BoundUIView 는 특정 UIView 의 자식 요소로 포함됨으로써 화면에 표시된다.자식 요소로 추가될 UIView 는 자신이 보여질 위치와 크기가 결정되어야한다. 자식 요소 위치의 기준점은 부모요소의 기준점으로부터 계산된다.frame 의 좌표는 부모 View 가 기준이므로 origin 위치가 절대값이 아니라는 말과 동일하다.아래 사진에서 흰색 rect 의 frame 은 아래와 같다. frame : 10.000000, 10.000000, 100.000000, 100.000000 UIView 는 frame 외에 bounds 속성을 가진다. 두 속성 모두 CGRect 타입으로 위치와 크기를 나타내지만 의미하는 바가 다르다. bounds 는 자신을 기준으로 한다. 위 흰색 rect 의 ..
1. UIDocumentInteractionController 의 사용 UIDocumentInteractionController 는 sandbox 내부의 파일과의 사용자 상호 작용을 관리하기 위한 클래스이다.예를들어 이메일 앱에서는 사용자가 첨부파일을 미리보고 다른 앱에서 열 수 있도록한다.또한 지정된 파일을 미리 보거나 열거나 복사, 인쇄할 수 있는 적절한 UI 를 제공한다. UI 를 나타낸 후 UIDocumentInteractionController 는 파일 미리보기 및 메뉴 표시에 대한 동작들을 담당한다. self.documentController = [UIDocumentInteractionController interactionControllerWithURL:fileURL];self.documen..
1. iOS 10 Widget 에서의 Height iOS 8, 9 와는 다르게 10 에서는 위젯의 height 가 고정이 되어버렸다.즉, self.preferredContentSize = CGSizeMake(0, 200); 와 같은 코드가 실제로 동작하지 않게되며 위젯의 height 를 임의로 수정할 수 없게 되었다. 대신 Expand 모드를 만들어 NCWidgetProviding Delegate 에서 Content Size 를 수정할 수 있도록 열어놓았다.사용법은 아래와 같다. self.extensionContext.widgetLargestAvailableDisplayMode = NCWidgetDisplayModeExpanded; - (void)widgetActiveDisplayModeDidChange..
보호되어 있는 글입니다.
1. reloadData 에서의 Crash 가 발생하는 현상 (UITableViewDataSource 에는 아무 이상 없다는 가정하에) UITableView 내부 Cell 안에 UITextField 가 존재하는 상태에서, UITextField 에 포커스가 가 있는 채로[tableView reloadData]; 를 호출하게 되면 Crash 가 발생할 수 있다.이때 Focus 를 뺏어주고 reloadData 를 호출하면 정상적으로 작동한다. 2. TableView 에서 cellForRow: 시 Cell 재사용을 하지 못하고 갑자기 사라지는 현상 UITableView 내부 Cell 안에 UITextView 가 존재하는 상태에서, UITextView 의 크기에 따라 Cell 크기를 조절해야할 때가 있다.(한글의..
블락의 실체 블락을 선언할 경우 실제로 컴파일러에의해 생성되는 코드에서는 __block_literal 이라는 구조체(struct) 형태로 선언이 된다.이 구조체 안에는 isa 정보가 포함되어있어서 결국 Objective-C의 객체의 특성을 가지게 된다. 일반적으로 객체들은 힙(heap)에 잡히게 되지만 블락은 특이하게도 스택(stack)에 할당되는 객체이다. 이는 일반적으로 블락이 사용되는 범위가 블락이 선언되어있는 동일 범위에서 벗어나지 않기 때문이다. 즉, 스택에 할당하게 되면 실행 속도 측면에서 힙에 비해 유리하기 때문에 실행속도 최적화를 위해 기본적으로 스택에 할당을 하게된다. 디버거로 할당된 블락 변수를 조사해보면 위 그림과 같이 구조체로 되어있다.구조체 내부 변수들에서 볼 수 있듯이 해당 구조..
App Test (Enterprise Archive) 도중 App 을 업데이트 했을 때 TodayExtension 에서 아래와 같은 현상이 발생했다. 1. Widget 의 App 이름만 나오고 Body 가 안나오는 현상 2. 이전 Widget 화면이 나와있는 상태에서 아무 Touch Event 를 받지 못하는 현상 이와 같은 현상은 App Store 나 iTunes 를 이용하지 않고 iTool 과 같은 다른 Tool 들을 이용하여 직접 업데이트를 했을 때 발생하는 것으로 보인다. 이 때 주의할 점은, 앱이 멈췄다고 해서 무조건 Update 방식문제다라고 판단하기 전에Today Extension 에서 발생하는 Crash 가 있었나 반드시 확인해야한다. 결론은, App Update Test 시에는 iTune..
- Total
- Today
- Yesterday
- Swift 3.0
- Swift
- Block
- UIView
- HTTP
- coredata
- Swift3
- string
- ios
- thread
- CGImage
- set
- optional
- 읽기 좋은 코드가 좋은 코드다
- AWS
- CIImage
- applicationWillResignActive
- NSManagedObjectModel
- RunLoop
- 꺼내먹어요
- NSManagedObjectContext
- Swfit
- Swift 3
- NSManagedObject
- dictionary
- docker
- delegate
- EffectiveObjectiveC
- workerThread
- Arc
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |