Swift与Objective-C混合编程

Swift与Objective-C混合编程,第1张

概述参考资料 - 从Objective-C到Swift - swift与objective-c混编 - Swift and Objective-C in the Same Project Swift类引用Objective-C文件 因为Swift没有内嵌的头文件机制,因此Swift调用Objective-C需要一个名为“<工程名>-Bridging-Header.h”的桥接头文件。桥接头文件的作用是为

参考资料
- 从Objective-C到Swift
- swift与objective-c混编
- Swift and Objective-C in the Same Project

Swift类引用Objective-C文件

因为Swift没有内嵌的头文件机制,因此Swift调用Objective-C需要一个名为“<工程名>-BrIDging-header.h”的桥接头文件。桥接头文件的作用是为Swift调用Objective-C对象搭建一个桥,它的命名必须是“<工程名>- BrIDging-header.h”,我们需要在桥接头文件中引入Objective-C头文件,所有的Swift类会自动引用这个头文件。

OJC类如下:
//// ObjcFunc.h// CombinedProgram//// Created by apple on 15/7/1.// copyright (c) 2015年 hoteam. All rights reserved.//#import <Foundation/Foundation.h>@interface ObjcFunc : NSObject-(Nsstring*)sayHello:(Nsstring*)greeting withname: (Nsstring*)name;@end//// ObjcFunc.m// CombinedProgram//// Created by apple on 15/7/1.// copyright (c) 2015年 hoteam. All rights reserved.//#import "ObjcFunc.h"#import "CombinedProgram-Swift.h"@implementation ObjcFunc- (Nsstring*)sayHello:(Nsstring*)greeting withname: (Nsstring*)name{    Nsstring *string = [Nsstring stringWithFormat:@"Hi,%@ %@.",name,greeting];    return string;}@end
Swift类中调用
import Foundation@objc class SwiftFunc: NSObject {    func sayHello() -> VoID {    var obj : ObjcFunc = ObjcFunc()    println(obj.sayHello("Hello",withname: "Swift"));        return    }}
Objective-C类引用Swift文件

(1)在Building Settings -> Packaging -> Defining中选定Module name;
(2)在OJC的头文件中引入:#import "{Modulename}-swift.h"

 SwiftFunc* obj = [[SwiftFunc alloc] init]; [obj sayHello];

有时候会发现Xcode无法自动生成*-Swift.h文件,可以参考StackOverflow上的这篇文章。该文章总结下来,我们需要进行以下两大步检测:
(1)检测你的Xcode的配置

Product Module name : myprojectdefines Module : YESEmbedded Content Contains Swift : YESInstall Objective-C Compatibility header : YESsObjective-C BrIDging header : $(SRCROOT)/Sources/SwiftBrIDging.h

(2)检查你的Swift类是否正规 要保证你的Swfit类中已经使用@objc关键字声明了一个继承自NSObject的类。Xcode不会为存在任何编译错误的类进行编译 *** 作。 (3)忽略Xcode的报错,先编译一下

总结

以上是内存溢出为你收集整理的Swift与Objective-C混合编程全部内容,希望文章能够帮你解决Swift与Objective-C混合编程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1086852.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存