当前位置: 首页 > 面试题库 >

将Swift框架导入Objective-C项目

东郭兴学
2023-03-14
问题内容

我将swift框架导入到Objective-C项目中,如下所示:

@import MyFramework;

问题在于我正在导入框架的类只能识别某些类。

被认可的课程:

public class RecognizedClass:UIViewController, WKNavigationDelegate, WKScriptMessageHandle 
 { ... }

该类不是:

public class VeediUtils
{ ... }

它们都是公开的,那么为什么第一个在工作空间中被识别,而另一个却没有?

我也在头文件MyFramework-Swift.h中看到一个类

@interface RecognizedClass : UIViewController <WKNavigationDelegate, WKScriptMessageHandler>

出现而其他不出现

这是为什么?

另外要指出的是,当我将swift框架导入swift项目时,该相同的程序也可以工作


问题答案:

要访问不是从NSObject继承的objc中的swift类,您需要:

@objc公共课程VeediUtils

Swift类或协议必须使用@objc属性标记,才能在Objective-C中访问和使用。该属性告诉编译器可以从Objective-
C访问这段Swift代码。如果您的Swift类是Objective-C类的后代,则编译器会自动为您添加@objc属性。

https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html



 类似资料:
  • 问题内容: 我有一个Swift项目,正在尝试导入基于ObjC的框架。该框架位于项目路径下的目录中,并由项目在Xcode中引用。它也已添加到项目“构建阶段”页面的“链接二进制文件与库”中。 但是,由于某种原因,我似乎无法在Bridging-Header文件中包括该框架。我收到以下错误: 我检查过的事情: “安装Objective-C兼容性标头”设置为“是”。 标题搜索路径包括框架的路径。 我确定我会

  • 问题内容: 我已经在Swift中编写了一个库,但无法将其导入到用Objective-C编写的当前项目中。 有什么方法可以导入吗? 问题答案: 您需要导入。请注意,这是目标名称-其他答案会导致使用类名称的错误。 这个单个文件是一个自动生成的标头,它为项目中所有用注释或继承的Swift类定义了Objective-C接口。 注意事项: 如果您的目标名称包含空格,请用下划线替换(例如,成为) 如果目标是框

  • 问题内容: 我得到了一个迅速的项目,并使用CocoaPod导入了第三方存储库。在我使用的pod文件中,因此存储库将内置到框架中以供使用。然后将ObjC框架导入或导入到我的桥接头中。 在这种情况下,我运行该项目,它可以正常工作。但是当我存档时,在桥接头文件中找到“找不到文件”。 和 我该如何解决这个问题? 问题答案: 我的解决方案是: 不要在桥接头文件中导入ObjC框架,而只是在需要该框架的文件中导

  • 问题内容: 我正在尝试导入一个项目。我在“构建阶段”->“使用库链接二进制文件”中添加了内容。 Objective-C的作品: 但是在Swift中,我得到一个错误: 根据Swift文档: 导入外部框架 您可以导入具有纯Objective- C代码库,纯Swift代码库或混合语言代码库的外部框架。无论框架是用单一语言编写还是包含两种语言的文件,导入外部框架的过程都是相同的。导入外部框架时,请确保将要

  • 问题内容: 我正在尝试将Objective-C框架与Swift编程语言一起用于iOS 8开发。这是导入的一个特定情况,但是一般的问题是: 您如何将Objective-C框架导入Swift并获得认可? 我正在尝试使用iOS 8和Xcode 6 Beta将Parse框架集成到快速应用程序中。 这是在Objective-C中进行Parse框架集成的技术: https://www.parse.com/ap

  • 我正在尝试使用Swift编程语言的Object-C框架进行iOS8开发。这是导入的具体情况,但一般问题是: 如何将Objective-C框架导入swift并使导入得到认可? 我正在尝试使用ios8和xcode6beta将解析框架集成到swift应用程序中。 以下是Objective-C中解析框架集成的技术: https://www.parse.com/apps/quickstart#social/