Object-c 로 framework만들기
ios8 부터는 framework형태로 라이브러리 제작이 가능하다. 이를 cocoapod등에 올리면 cocoapod install명령으로 간단하게 누구나 사용할수있는 라이브리를 만들수 있다.
1. 일단 file-> new -> workspace 를 만든다. (MY_IOS_FRAMEWORK폴더로 만들고, my_ios_framework이름의 스페이르를 만들었다)
2.만들면 에디터에 아무것도 없는데, file->new->project를 선택하여 밑의 Framework & library에서 Framework 를 선택한다.
https://github.com/sugoigroup/ios_framework_sample/commit/6e2d9bf1b32b893803468715e9e889e8da260e03
3.Product Name 은 적당하게 입력( myframework )
4.다음 화면에서 프로젝터의 폴더를 선택하라고 하는데, 폴더를 아까 만든 workspace 를 선택(MY_IOS_FRAMEWORK)하고 , 중요한건 [ Add to] 에서 아까 만든 워크스페이스를 선택(my_ios_framework)한다.
5. PROJECT 에서 myframework(서류상자)를 선택하고 Build Settings 에서 Architectures -> Build Active Architecture Only 를 No로 한다.(Debug때만 Yes로 하며, 이렇게 하면 빌드시에 연결된 기기에 맞게 아키텍쳐가 구성됨.)
https://github.com/sugoigroup/ios_framework_sample/commit/9bc32aaa070d65230dbee79cfe33326c10e5d817
6.TARGETS에서 에서 myframework(서류상자) 선택하고 Build Phases 에서 Headers 에 myframework.h 가 public 에 있는지 확인
7. 현재 framework 는 만들어 졌지만, 아무기능도 안하므로 로그라도 찍는 녀석을 만들자. myframework(누런폴더) 에서 File -> new -> file... 선택하고 [ Cocoa Touch Class]를 선택해서 "MyLogger "(NSObject - Object-c) 입력하여 파일을 만들자.
https://github.com/sugoigroup/ios_framework_sample/commit/015d51bfde20328e82403096ac4566ef6a3b9307
8. MyLogger.h(헤더파일) 과MyLogger.m(바디화일)에 할일들을 넣어보자. 이 프레임워크를 이용하는 쪽에서 (싱글천) 객체를 초기화시에 로그를 찍겠다고 true 를 설정하면 로그가 찍히는 작업을 만들어보자.
https://github.com/sugoigroup/ios_framework_sample/commit/45f3f30468762e320b9a6f50586bf11fcb961330
9. MyLogger를 만들긴 했어도 외부에서는 볼수 없는 상태이기 때문에 , MyLogger.h 를 선택하여, 오른쪽의 Target Membership 영역에서 myframework: Project 로 되어있는 부분을 myframework:Public으로 바꾸자.
그리고 myframework.h 의 맨밑줄에 #import <MyLogger/MyLogger.h> 를 추가하자. 실제로는 이거다 . #import <myframework/MyLogger.h>
https://github.com/sugoigroup/ios_framework_sample/commit/0039f77376cdbae22a158f5af39a85081bf54d6a
10. 이제 Product > Build 해보면 왼쪽의 Products(노란색)밑에 myfamework.framework 파일이 생긴다.(원래 있었지만 빨간색이었을지도 )
11. myfamework.framework를 사용할 사용자앱(customerformyframework)을 만들자. File->new->Project 에서 간단한 앱을 생성한다.(폴더는 MY_IOS_FRAMEWORK 하위에 생성되도록 했다. 딴데두기 귀찮아서..)
https://github.com/sugoigroup/ios_framework_sample/commit/9d6db6236bed8f1b8ce64b716a7c4710cc292c92
12.여기에 이제 myframework.framework를 넣어야 하는데, 그냥 myfamework.framework 파일을 잡고 새로열게된 customerformyframework 편집창의 왼쪽 맨위의 파란색Xcode아이콘 밑에 넣자. ( Copy Items if needed 선택하자.)
13. ViewController.m 파일에서 사용해보자.
아! customerformyframework에서 TARGETS > General > Frameworkds, Libraties 에 보면 Embed 가 Do Not Embed 로 되어있는데, Embed Without Signing 으로 선택하자.
https://github.com/sugoigroup/ios_framework_sample/commit/034dd5315c94dbb7556003c30b15d0a109f9b617
#import "ViewController.h"
#import <myframework/myframework.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
MyLogger *mylogger = [MyLogger sharedInstance:TRUE];
[mylogger printMyLog:@"taeho"];
}
@end
14. 실행하면 로그가 찍힌다..
2021-02-10 23:59:56.856301+0900 customerformyframework[82872:2892194] Log your name: taeho
MyLogger *interface = [MyLogger sharedInstance:FALSE]; 를 FALSE로 하면 안찍힌다.
0 comments:
댓글 쓰기