Objective-C로 Swift 파일을 읽을 때?
이번에 하고 싶은 거.
이번에 하고 싶은 일은 Objective-C의 프로젝트에서 버튼을 눌렀을 때 Sample라는 문자열이 아니라 Swift에서 정의한 Hello World!아이콘
1.프로젝트의 BuildSettings 설정
먼저 그림에서 보듯이 BuildSettings의 Defines Module를 '아니오' (기본 설정) 에서 '예' 로 변경합니다.
Defines Module을 직접 번역하면 모듈의 정의를 의미합니다.이것은 프레임의 눈썹과 함께 있는 모듈입니다.이것은 Xcode가 모듈e.privet.modulemap 파일을 설치하도록 지시하기 위해서입니다. (때로는 모듈e.prive.modulemap일 수도 있습니다.)
Swift 코드의 Objective-C를 사용하려고 합니다.m 파일의 경우 import Swift 코드에서 Xcode로 생성된 헤더 파일(Sample Project 1-Swift.h)이 필요합니다.Xcode에서 생성된 머리글 파일을 가져오면 Swift에서 프로젝트의 Objective-C 코드에서 선언된 유형을 처리할 수 있습니다.
여기서는 SampleProject1-Swift에 대해 설명합니다.h 파일을 생성하여 사용할 수 있습니다.
2. 기존 Swift 파일 다시 쓰기
Swift 파일의 클래스, 상수 및 변수는 Objective-C 파일에서 직접 사용할 수 없습니다.
수정해 드릴게요.
하고 싶은 거 다시 한 번 확인!
이번에 하고 싶은 일은 버튼을 눌렀을 때 Sample이라는 문자열이 아니라 Swift가 정의한 HelloText 상수인 HelloWorld를 보여주는 것이다.
storyboard 측
전제로 storyboard 측은 IBOutlet으로 각각 textLabel과 button을 연결하고 있다.
Swift 파일 측면
우선 반에 @objcMembers를 추가하거나 방법 전에 @objc를 추가해야 합니다.
이번에는 상수를 처리해야 하기 때문에,class Text 모델 앞에 @objcMembers를 붙입니다.
(구)변경 전↓
4
import Foundation
class TextModel : NSObject {
let helloText:String = "Hello World"
}
(신규)변경 후 ↓import Foundation
@objcMembers class TextModel : NSObject {
let helloText:String = "Hello World"
}
TextModelObjective-C 파일 면
Objective-C의 경우 SampleProject1-Swift가 먼저 사용됩니다.h를 가져와야 합니다.가져오지 않으면 Swift에서 쓴 클래스나 방법을 Objective-C 측면으로 읽을 수 없습니다.
(구)변경 전↓
4
#import "ViewController.h"
#import <UIKit/UIKit.h>
@interface ViewController()
@property (strong, nonatomic) IBOutlet UILabel *textLabel;
@property (strong, nonatomic) IBOutlet UIButton *button;
@end
@implementation ViewController
- (void)viewDidLoad{
[super viewDidLoad];
}
- (IBAction)showText:(UIButton *)sender {
self.textLabel.text = @"Sample";
}
@end
(신규)변경 후 ↓#import "ViewController.h"
#import <UIKit/UIKit.h>
#import "SampleProject1-Swift.h" //←ここでimport
@interface ViewController()
@property (strong, nonatomic) IBOutlet UILabel *textLabel;
@property (strong, nonatomic) IBOutlet UIButton *button;
@end
@implementation ViewController
- (void)viewDidLoad{
[super viewDidLoad];
}
- (IBAction)showText:(UIButton *)sender {
TextModel *model = [[TextModel alloc] init]; //←ここでSwift側のクラスをObjective-Cで定義
self.textLabel.text = [model helloText]; //←定義したmodelの定数を呼び出す
}
@end
3. 구축 확인
이번에 버튼을 눌렀을 때 textLabel이 Hello World로 바뀌면 Swift 측의 상수가 호출된다.
그럼 구축해 보세요!Swift 측면의 상수가 호출되었는지 확인합니다.
Hello World라고 불렸네요!
이렇게 하면 스위프트 측의 상수가 호출되었음을 확인할 수 있다.물론 상술한 방법으로 방법을 호출할 수도 있다.Objective-C에서 Swift가 정의한 상수 & 변수, 방법 등을 사용해야 한다면 참고하십시오!
앞으로도 더 깊이 이해하고 더 자세히 설명하고 기사를 갱신할 수 있도록 잘 부탁드립니다!
읽어주셔서 감사합니다!
참고 문장
• Swift 및 Objective-C 결합 with Xcode
• Swift 및 Cocoa 또는 Objective-C 사용
・Objective-C 프로젝트에서 Swift 프로그램의 방법, 속성의 접근 방법【Swift5】
• Objective-C의 Swift 클래스를 사용합니다.
Reference
이 문제에 관하여(Objective-C로 Swift 파일을 읽을 때?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/mark_1975m/articles/c3d320c6912eb7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)