问题标签 [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 - 我可以在静态库中扩展 NSString 类并在带有 Swift 的 App 中使用它吗?
我在自定义静态库 CommonLib 中扩展 NSString :
因为 CommonLib 包含一些 Swift 代码文件,所以我在 CommonLib 项目中创建了一个桥接头文件 CommonLib-Bridging-Header.h:
接下来,我将 CommonLib 链接到我的 App 项目,并在 App 项目中创建一个新文件 Node.swift:
最后,我在我的应用程序的某个地方使用它:
这时候编译就OK了!!!但是当我运行应用程序时它崩溃了:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[Swift._NSContiguousString isContainsEmoji]:无法识别的选择器发送到实例 0x60400084b340”
所以这里有什么问题吗???以及如何解决它???谢谢 ;)
(PS:我的环境Xcode 9.3.1 swift 4.1)
objective-c - 使用参数从 Objective-C 调用 Swift 函数
我想将 Swift 类集成到 UIViewController 类中。我想我所有的设置都是正确的。我有一个带有函数的类 rURLTask:NSObject:
在我的 .swift 文件中,可以从我的 Objective-C 类调用它:
它打印得很好。另一个功能是:
但是这个我不能从Objective-C调用。我试着写:
我得到错误:
'rURLTask' 没有可见的@interface 声明选择器'ladeURL:'
我认为有一个非常基本的错误。在另一个项目中使用 Swift 3 中的 Objective-C 效果很好。
objective-c - 桥接 Objective-C 代码时的可空性指南
我目前是 Swift 的新手,但我是一个 Objective-C 框架的维护者,它是一个 C 库的包装器,我希望为它提供最好的 API。
我正在看这种代码
并想知道nullable
注释是否合理。查看底层 C 函数,
很明显,Obj-C 包装器中的模内存分配失败,
这是不可为空的。
或者是吗?
在桥接时,特别是在面对分配失败时,是否有一些具体的指导方针可以被认为是可接受的 wrt 可空性?如果我使该属性nonnull
和内存失败,斯威夫特的反应会有所不同吗?
ios - 在 Objective C 中看不到 Swift 变量/方法
我无法从Objective C中看到要设置的方法/变量,myVar
即使true
我已经添加了@objc
andpublic
修饰符并且方法签名Bool
中没有。setMyVarTrue()
Bool
这可能是由 Swift和 Objective C之间的差异造成的BOOL
。
其他类方法/变量是可见的,只是这个特定的不是。
如何Bool
从 Objective C 设置 Swift?
SWIFT代码:
目标C代码:
swift - 未找到 ProjectName-Swift.h / 生成的 Xcode 10
在 Xcode 10 中运行我的项目会引发此错误
fatal error: 'Stories-Swift.h' file not found
我尝试了多种方法,包括:
- 将新的 swift 文件添加到项目并重建它
- 设置
Defines Modules
为Yes
- 仔细检查我的
SWIFT_OBJC_INTERFACE_HEADER_NAME
并将其设置为$(PROJECT_NAME)-Swift.h
我检查了我的派生数据,没有 ProjectName-Swift.h 的痕迹。
我错过了什么明显的东西吗,TIA。
swift - 在 swift 4.2 中从公共枚举访问内部枚举时出错
访问公共枚举中的内部枚举值时出现错误
代码片段
错误说
看起来这是因为桥接@Objc但无法解决问题。我无法删除@Objc,因为我的代码也用于 Objective C 项目。
谁能帮我解决这个问题。
PS :更新到Xcode 10后开始观察此错误
c++ - 使用 Build Phases 上链接的 C++ 库编译 Xcode Swift 项目时出错
我在网上搜索了很多,但没有找到解决我问题的方法。我的目标是在 C++ 中创建一个简单的类并在 Swift 上使用它。为此,我确实遵循了本教程-> http://www.swiftprogrammer.info/swift_call_cpp.html(非常好)。基本上我已经按照以下步骤操作:
- 创建
junk.cpp
和junk.h
文件 - 编译使用
g++ or/and clang++
- 创建 .a 文件:
$ ar r libjunkcpp.a junk.o
- 链接到 Xcode 中
Build Phases -> Link Binary With Libraries -> Add
因此,当我这样做时,Xcode 不会编译更多我的项目,在 Xcode 的左侧会出现错误消息:
链接器命令失败,退出代码为 1(使用 -v 查看调用)
在日志中,错误消息是:
ld:档案没有架构 x86_64 的目录文件'/Users/augustosansoncadini/Documents/XcodeProjects/Ex_cpp_Swift_CmdLineTool/junk/libjunkcpp.a'
我认为需要编译到它的架构但是当我输入g++ -v
结果是:
所以我得出结论,架构目标是正确的。
我认为这张图片可以提供帮助:
注意:
当我.a
从 Link Binary With Libraries 中删除文件时,代码编译得很好。
c++ - 在 Xcode 上的 Swift 项目上使用 C++ 时出错:架构 x86_64 的未定义符号
网上有很多关于这个的问题,但我无法解决我的问题。这几天我一直在研究这个。
我想在 Swift 项目上运行一个简单的 C++ 类,为此我遵循了本教程:http ://www.swiftprogrammer.info/swift_call_cpp.html 。基本上我已经按照以下步骤操作:
- 创建
junk.cpp
和junk.h
文件 - 编译使用
g++ or/and clang++
- 创建 .a 文件:
$ ar r libjunkcpp.a junk.o
ranlib libjunkcpp.a
- 链接到 Xcode 中
Build Phases -> Link Binary With Libraries -> Add
当我编译时,出现以下错误:
垃圾变种h
垃圾文件
包装器.cpp
桥接器
int getIntFromCPP();
c++ - 如何制作从 C++ 到 Swift 的回调函数指针?
在网上有很多教程可以做到这一点,但没有一个是清晰客观的,因为我更喜欢展示我的案例。
我正在开发一个使用 C API 连接到服务 Web 的 iOS 应用程序,它具有回调函数,我的任务很简单,我必须在 Swift 代码上获取用 C 代码生成的事件。为此,我尝试了一些方法,我正在尝试的当前方法如下。
设想
我有三个文件wrapper.cpp
:Bridging-Header.h
和ViewController.swift
在Briding-Header.h
我声明了一个函数的指针。
桥接-Header.h
我wrapper.cpp
写了我的代码来连接到网络并使用回调函数。所以这是断开连接时获取状态连接的回调方法。
包装器.cpp
它没有编译,错误消息:Use of undeclared identifier 'callback_t'
.
如果我尝试 write: void callback_frame(unsigned char*);
,linker command failed with exit code 1
则会发生错误。
ViewController.swift
我无法导入Bridging-Header.h
文件,wrapper.cpp
因为会导致很多冲突。