본문 바로가기

프로그래밍/iOS,macOS

이것저것 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