1. 간단한 Retain Cycle @interface Item : NSObject@property (nonatomic, strong) Item* value1;@property (nonatomic, strong) Item* value2;@end - (void)someMethod {Item *a1 = [[Item alloc] init];Item *a2 = [[Item alloc] init];a1.value2 = a2;} 객체 참조카운트 a1 1 a2 2 @interface Item : NSObject@property (nonatomic, strong) Item* value1;@property (nonatomic, strong) Item* value2;@end - (void)someMethod {Item *..
용어정리 SIM 카드 가입자 식별 모듈 (Subscriber Identification Module) 을 구현한 IC 카드 - 카드 크기 : 표준 > 미니 > 마이크로 > 나노 > 단말기 내장형 ICCID SIM 카드의 고유 번호 (SIM 카드 외부에 기록된 89로 시작하는 19자리 숫자) IMSI (International Mobile Subscriber Identity) 가입자 회선마다 달라지는 (450 으로 시작하는 15자리 숫자) 이동국가코드(MCC), 이동네트워크코드(MNC), 이동가입자식별번호 및 국가이동가입자식별번호(MSIN)로 구성된다. 이때 이동국가코드는 3자리, 이동네트워크코드는 2~3자리, 이동가입자식별번호는 최대 10자리까지 가능하며 IMSI는 최대 15자리를 갖는다. IMEI (I..
1. 요약 개방형 시스템 상호 연결 모델의 표준이다.실제 인터넷에서 사용되는 TCP/IP 는 OSI 참조 모델을 기반으로 상업적이고 실무적으로 이용될 수 있도록 단순화한 것이다. 2. 탄생 배경 초기 여러 정보 통신 업체 장비들은 자신의 업체 장비들끼리만 연결이 되어 호환성이 없었다.모든 시스템들의 상호 연결에 있어 문제없도록 표준을 정한것이 OSI 7계층이다.즉, 표준(호환성)과 학습도구로써 제작되었다. 3. 작동원리 OSI 7계층은 응용, 표현, 세션, 전송, 네트워크, 데이터링크, 물리계층으로 나뉜다.전송 시 7계층에서 1계층으로 각각의 층마다 인식할 수 있어야 하는 헤더를 붙이고 (캡슐화)수신 시 1계층에서 7계층으로 헤더를 떼어낸다. (디캡슐화) 출발지에서 데이터가 전송될 때 헤더가 추가되는데 ..
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..
기본적으로 Facebook, Kakao 로그인 시 앱이 설치되어 있는 경우 앱에 로그인되어 있는 정보를 이용해 로그인을 한다.즉, 우리 앱에서 Facebook 혹은 Kakao 로 앱이 이동했다가 다시 우리 앱으로 돌아온다.(이를 Facebook 에서는 FAS, Fast App Switching 이라 표현한다.) 예외가 있다면, iOS 9 부터 iOS 가 앱 간 이동을 지양한다는 정책을 발표함에 따라Facebook 로그인 시 무조건 Safari WebView 가 노출된다. 참고 사이트 : https://developers.facebook.com/blog/post/2015/10/29/Facebook-Login-iOS9 1. Facebook WebView 노출의 경우 (iOS 9 이상 or 앱 미설치) Web..
preferredMaxLayoutWidth preferredMaxLayoutWidth 는 multiline label 일 때 영향을 주는 property 로 Label 의 Width 가 42 이상 늘어나지 못함을 명시적으로 Set 할 수 있다. 이상 이므로 글자가 더 들어갈 공간이 없으면 width 가 42 보다 적게 들어갈 수 있다. (Ex. width = 40.5) multiline label 이 아닌경우 아무런 영향을 미치지 못한다. preferredMaxLayoutWidth 를 설정한 채로 Label 에 Text 를 set 하면 intrinsic content size 가 실제 사이즈처럼 나온다.sizeThatFits 와 비교했을 때 intrinsicContentSize 가 월등히 좋다. (다만,..
- Total
- Today
- Yesterday
- CIImage
- dictionary
- NSManagedObjectContext
- HTTP
- Swift 3
- Block
- set
- workerThread
- Swfit
- NSManagedObjectModel
- AWS
- Swift
- Swift 3.0
- 꺼내먹어요
- RunLoop
- CGImage
- UIView
- delegate
- Swift3
- docker
- NSManagedObject
- 읽기 좋은 코드가 좋은 코드다
- coredata
- ios
- string
- applicationWillResignActive
- Arc
- optional
- thread
- EffectiveObjectiveC
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |