티스토리 뷰
아주 쉽습니다... 조금 귀찮을 뿐입니다. ^^
먼저 저는 프로젝트를 Objective-C 기반으로 만들었습니다.
다소 예제가 말도 안되게 만들었지만 Swift -> Objective-C -> Swift로 코드를 사용하는 방법을 설명하기 위해서 그랬습니다.
1. SwiftModule.swift
- 스위프트 예제를 가지고 오기 위해서 만들었습니다.
@objc class SwiftModule : NSObject {
@objc func test() {
print("test function")
}
}
1. @objc를 사용하여 Objective-C에서 알아볼수 있도록 하였습니다.
2. NSObject를 상속받아 init이 없다는 에러가 나지 않도록 하였습니다.
2. ObjectiveModule.h + m
- 억지로 Swift Class를 사용하기 위해 만들었습니다.
// header
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface ObjectiveModule : NSObject
- (void) test;
@end
NS_ASSUME_NONNULL_END
// module
#import "ObjectiveModule.h"
#import <ObjectiveUseSwift-Swift.h>
@class SwiftModule;
@implementation ObjectiveModule
- (void) test {
SwiftModule *module = [[SwiftModule alloc] init];
[module test];
}
@end
1. header에는 test를 public으로 만들어주기 위해서 넣어주었으며
2. module에는 <ObjectiveUseSwift-Swift.h> 파일을 넣어주어서 안에서 객체를 가져와서 사용할수 있도록 하였습니다.
끝난게 아닙니다.
이렇게만 하면 바로 에러가 뿜뿜할겁니다.
왜냐면 우리가 지금 위에 지정한 header는 프로젝트 설정으로 하여금 자동으로 만들어준겁니다.
아니면 우리가 만들어줘야 하는데 너무 귀찮죠.
3. Project > TARGETS > Build Settings 으로 이동하면 다음과 같은것이 있는데 NO로 되어 있을겁니다.
이것을 YES로 만들어주고 build를 한번 하여 줍니다.
4. ObjectiveUseSwift-Bridging-Header
- 다시 Objective-C를 Swift에서 가져다가 사용하기 위해서 만들었습니다.
#import "ObjectiveModule.h"
이렇게 넣어줍니다.
이제 거의 다 왔습니다.
5. ViewController
- Objective-C를 Swift에서 가져와서 사용하는 예를 보여주려고 만들었습니다.
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let module = ObjectiveModule.init()
module.test()
}
}
이제 보여주려는 예제는 다 보여주었습니다.
참고로 사용하였던 프로젝트 첨부합니다.
아니면 깃헙에 놀러오세요.
https://github.com/outofcode-example/iOS-ObjectiveSwiftObjective
'Mobile > iOS' 카테고리의 다른 글
swift. iOS8 이상 Push 기본 구현 해볼랍니다. (0) | 2019.07.13 |
---|---|
iOS Lifecycle... (0) | 2019.07.12 |
iOS. StatusBar 색상, 보이기를 조절합시다. (0) | 2019.07.09 |
iOS. swift의 초기화에 대해서 알아봅시다 (0) | 2019.06.29 |
iOS. xcode로 빌드할때 ITMS-90473 해결. Extension Version 자동 맞추기 (0) | 2019.06.29 |
- Total
- Today
- Yesterday
- enum
- tomcat
- ios
- docker
- Gradle
- Codable
- rxswift
- Kotlin
- Linux
- Xcode
- MySQL
- CentOS
- ubuntu
- golang
- war
- go
- Spring
- php
- Python
- nodejs
- centos8
- cocoapods
- git
- windows10
- android
- github
- Java
- SWIFT
- intellij
- Windows
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |