我正在努力创建自己的框架,我添加了目标c文件并且它工作正常,之后我需要在添加swift文件后添加一些swift文件 xcode没有给我auto选项创建桥接然后我跟着混合搭配方法 https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-ID122。我遵循了我认为我理解的一切。
我想将 swift 文件访问到 Objective c 中,但我遇到了前向声明错误,所以这是我附加的示例代码,请指导我哪里做错了。
测试对象CFile.h
#import <Foundation/Foundation.h>
@class TestSwiftFile;
@interface TestObjCFile : NSObject
@end
测试对象CFile.m
#import "TestObjCFile.h"
#import <TestFrameworkTry/TestFrameworkTry-Swift.h>
#import "TestFrameworkTry.h"
@implementation TestObjCFile
- (void)TestMethodForImportingSwiftFile
{
TestSwiftFile * testSwiftFile = [[TestSwiftFile alloc] init];
// TestSwiftFile * testSwiftFile = [self returnSwiftClassInstance];
NSLog(@"%@",testSwiftFile);
}
@end
TestSwiftFile.swift
import Foundation
并且错误发生在测试对象CFile.m以下行。
TestSwiftFile * testSwiftFile = [[TestSwiftFile alloc] init];
as show attached picture.
最后我得到了解决方案。我做了以下更改。下面是您框架中的待办事项列表。
Objective C 类中的 Swift 类用法
- 在 Swift 中的类名之前使用 Open 关键字
- 在 Swift 类的 Open 关键字之前使用 @objc 关键字
- 导入 Umbrella 文件中 Objective C 类的所有标头
YourProject.h 那些正在使用 Swift 类。
- Use
#import <YourProjectName/YourProjectName-Swift.h>
在目标
C
我遵循了苹果公司的 Mix and Match 方法。
Note: 有时<YourProjectName/YourProjectName-Swift.h>
文件不能导入到标头中,只能导入到.m
文件。仅供参考,该文件是由编译器自动创建的。如果您在项目中搜索它,您将无法找到它,但如果您在目标文件中 ⌘ 单击它(作为代码中导入的文件),Xcode 将(应该)打开它并向您展示 Swift 类的所有 Objective-C 类接口。要查看 Swift -> Objective-C 模块头的名称,请转到目标的构建设置并搜索$(SWIFT_MODULE_NAME)-Swift.h
或者简单地-Swift
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)