问题标签 [objective-c-swift-bridge]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - Objective-C - 现有代码库的 Swift 桥接性能
对于有将 swift 添加到现有 Objective-C 代码库中的经验的开发人员的性能问题。
我的前提是:最终Bridging-Header.h
可能会变得非常大(它可能最终包含所有 1.5k 现有的 Objective-C 类(提供或获取那些不会从 Swift 访问的类)),反之亦然PRODUCT-Swift.h
生成的标头。
我担心编译性能可能会急剧下降:每次包含的任何.h
类发生更改时,都必须重新编译所有.swift
文件。
是这样吗?如果是这样,有没有办法优化性能?
澄清:假设您将整个项目类包含到.pch
文件中,现在每个类更改都会触发整个项目的重新编译。是否与Bridging-Header.h
工作方式相似?
objective-c - 桥接头文件中找不到文件错误
我有一个objective-c项目。我正在研究它大约两年。现在我想用 Swift 做新的工作。
我添加了一个新的 Swift 类。Xcode 要求我添加 BridggingHeader 文件,然后我按下是。
但现在在桥接头文件中,我想导入我当前的objective-c分类,但这个文件不识别我的objective-c文件。
例如当我写:
xcode 显示错误并说:
ios - 如何删除桥头而不出错?
前几天我在我的应用程序中添加了一个桥头,因为我试图将 Objective-C 文件添加到我的 Swift 项目中。我无法让连接正常工作(而且我也不知道如何实现 Objective-C 文件),所以我决定重新开始。我删除了 Objective-C 文件和 Bridge-Header 文件,现在我收到一条错误消息:
<unknown>:0: error: bridging header '/Users/CalebKleveter/Documents/Development/iOS/personal/swift/Projects/Dicey/Dicey/Dicey-Bridging-Header.h' does not exist
objective-c - 类型“SwiftClass”不能符合协议“ObjcProtocol”,因为它有无法满足的要求
我有一个我正在尝试在 Swift 类中实现的 Objective-C 协议。例如:
当我尝试在这样的 Swift 类中遵守它时:
我收到以下可怕的编译器错误:
类型“SwiftClass”不能符合协议“ObjcProtocol”,因为它有无法满足的要求。
我该如何解决这个问题?
ios - Objective-C 中的 SlideMenuControllerSwift 实现
我尝试在 Objective-c中添加SlideMenuControllerSwift 。
我可以在我的 AppDelegate.m中访问[slideMenuController openLeft]
SlideMenuControllerSwift具有UIViewController 扩展。
但是如何在 obj-c ViewController.m 中访问 toggleLeft() ?
ios - 从嵌入式 Objective C 框架调用 Swift
我有一个用 Swift 编写的名为 ColorApp 的应用程序,它调用 ASwiftFramework(我的 swift 文件的集合)以及 AnObjCFramework(Objective C 文件的嵌入式框架)。在我的顶级桥接头中,我只有:#import AnObjCFramework/AnObjCFramework.h>
.
我在 AnObjCFramework 中的一个类中有一个错误,我编写了一个修复程序并将其合并到一个新的 Swift 类中。我想从 AnObjCFramework 中的一个类中调用这个 swift 类(是的,它是 NSObject 的子类)。那可能吗?
我知道修复 Objective C 代码更容易,但我想更好地了解如何使用混合库。
总结一下:
ColorApp (Swift) --> ASwiftFramework (Swift)--> AnObjCFramework (ObjectiveC)-> (Swift Class)
objective-c-swift-bridge - 在同一个项目中使用 swift 和 Objective c 时编译器的行为如何?
Swift 在编译时做了更多的工作,比如属性的内存分配,而 Objective C 在运行时做同样的工作。Swift 使用优化编译器。如果存在混合和匹配,即具有 swift 代码和目标 c 的同一个项目,将使用哪个编译器 swift 或目标 c,以及它在编译时和运行时的行为如何相对于 swift 和目标 c。
swift - swift中的箭头运算符
我正在尝试在 swift 项目中采用用objective-c 编写的SDK。初始化SDK的objective-c方式如下:
我不相信 swift 中有与箭头运算符等效的东西,所以仍然可以初始化吗?我似乎找不到有关他特定主题的任何信息。
objective-c - Swift 中的 NS_ENUM
注意:这不是这个问题的欺骗。
我正在尝试在 Swift中使用名为GBCli的库。它是用 Objective-C 编写的。我在使用特定枚举时遇到问题:
我正在尝试使用以下方法:
在文档中,建议的用途是:
我尝试将其翻译为:
注意:这似乎GBValueRequirements
是库使用的参数类型,但这GBValueFlag
是他们希望您传递给所述方法的实际类型。证据:typedef NSUInteger GBValueRequirements;
,上面提到的枚举,以及许多函数采用GBValueRequirements
. 另请注意,每个案例GBValueFlags
都是排他的,因此它们不应该被或在一起。
但是,这给出了一个错误Type 'UInt' has no member 'Required'
,看到枚举被定义为类型NSUInteger
(应该转换为 UInt)是没有意义的。我可以访问 GBValueFlags,但我看不到任何 swift 将它翻译成的内容。奇怪的是,这有效:
但这不会:
因为它抛出:
在编译时。我应该如何将等价物传递.Required
给该方法?
定义我自己的枚举不起作用,因为 GBCli 的内部代码会根据自己的枚举检查参数。