Tôi có một dự án Objective-C cũ và tôi muốn gọi hàm và đối tượng Swift mới, tôi đã tạo tệp " <ProjectName>-Bridging-Header.h
" và " <ProjectName>-Swift.h
"
Tôi đã dễ dàng gọi hàm từ Swift sang Objective-C nhưng tôi gặp sự cố khi làm ngược lại.
Vì vậy, tôi đã tạo một lớp đơn giản "System.Swift"
import Foundation
@objc class System : NSObject {
@objc func printSome() {
println("Print line System");
}
}
bây giờ tôi đã thử làm theo tài liệu ở đây và bên trong <...>-Swift.h
tệp tôi đã viết điều này
@class System;
@interface System : NSObject
-(void)printSome;
@end
và tôi đã nhập nó vào bên trong Objective-C Class của mình. Tại thời điểm này, bên trong lớp Objective C (hiện tại là UIViewController) của mã Objective-C, tôi đã thử gọi phương thức "printSome":
- (void)viewDidLoad
{
[super viewDidLoad];
System * sis = [[System alloc] init];
[sis printSome];
//any additional setup after loading the view from its nib.
}
bây giờ tôi gặp lỗi sau:
Các ký hiệu không xác định cho kiến trúc i386: " OBJC_CLASS $ _System", được tham chiếu từ: objc-class-ref trong "ObjectiveC_Class_That_Call_Swift_Object". O ld: symbol (s) not found for architecture i386 clang: error: lệnh linker bị lỗi với mã thoát 1 (sử dụng -v để xem lời gọi)