이것저것 Objective-C 관련 노트~
기본 메쏘드
init : 객체 초기화
initWithFrame / initWithCoder : 코드나 IB에서 생성할때 초기화시 호출됨
awakeFromNib : IB에서 생성한 경우 각 outlet등 연결된 후 호출됨
layerClass : 레이어의 코어 에니메이션 등 직접 드로잉을 하는 경우 해당 레이어 객체를 리턴해 줘야함.
updateConstraints : 제약의 수정 추가
siteThatFits : 사이즈를 입력받아 해당 크기에 맞춘 사이즈를 반환하게 된다.
layoutSubviews : 각 서브뷰들의 레이아웃을 구성하게 된다. 보통 이시점에서 각 뷰들의 크기를 알수 있게 된다.
didAddSubview / willRemoveSubview
루트 뷰 컨트롤러
MyApplicationDelegate *app = [[UIApplication sharedApplication] delegate];
UIViewController *root = [app.window rootViewController];
네비게이션 컨트롤러의 루트 뷰
MyApplicationDelegate *app = [[UIApplication sharedApplication] delegate];
UINavigationController *navi = (UINavigationController*)[app.window rootViewController];
UIViewController *root = [navi.viewControllers objectAtIndex:0];
키보드 내리기
[self.view addGetstureRecognizer:[[UITapGestureRecognizer alloc]
initWithTarget:_myTextView
action:@selector(endEditing:)]];
오브젝티브C + Swift
오브젝티브C에서 Swift 사용
- 스위프트 클래스 작성시 @objc 식별자
- 오브젝티브C 에서는 #import "ProjectName-Swift.h"
Swift에서 오브젝티브C 사용
- ProjectName-Bridging-Header.h 생성
- 프로젝트 설정 > Build Settings > All
Swift Compiler - General > Objective-C Bridging Header
projectPath/ProjectName-Bridging-Header.h