小编Ali*_*may的帖子

将安全的 Rust 函数指针传递给 C

我已经创建了到 C 库的 Rust 绑定,目前正在围绕它编写安全包装器。

问题是关于接受 C 函数指针的 C 函数,而这些指针无法接受任何自定义用户数据。

用一个例子来解释更容易,

C 库:

// The function pointer I need to pass,
typedef void (*t_function_pointer_library_wants)(const char *argument);
// The function which I need to pass the function pointer to,
void register_hook(const t_function_pointer_library_wants hook);
Run Code Online (Sandbox Code Playgroud)

绑定:

// For the function pointer type
pub type t_function_pointer_library_wants = ::std::option::Option<unsafe extern "C" fn(argument: *const ::std::os::raw::c_char)>;
// For the function which accepts the pointer
extern "C" {
    pub fn register_hook(hook: t_function_pointer_library_wants);
}
Run Code Online (Sandbox Code Playgroud)

如果我可以像下面这样向用户公开 api,那就太好了,

// Let's assume …
Run Code Online (Sandbox Code Playgroud)

ffi rust libpd

6
推荐指数
1
解决办法
3059
查看次数

从 Objective C 类更新 SwiftUI 视图

我对 IOS 开发没有经验,但有一些基本的了解,可以通过阅读文档和教程来完成它。

我想从 Swift 调用 Objective C 代码并且它运行良好,现在我想做相反的事情并且有点困惑。

基本上,我首先在 SwiftUI 中的 Button 操作中调用 Objective C 函数,然后我希望该函数在同一个 SwiftUI 视图中更新 ObservedObject 并希望该视图重新呈现。

我已经找到并关注了一些关于它的资源,它们是

https://medium.com/@iainbarclay/adding-swiftui-to-objective-c-apps-63abc3b26c33

https://pinkstone.co.uk/how-to-use-swift-classes-in-objective-c/

Swift UI 视图看起来像

class Foo : ObservableObject {
    @Published var bar = ""
}

struct ContentView: View {
    @ObservedObject var baz = Foo();
    
    // Then access later as self.baz.bar as a parameter somewhere..

Run Code Online (Sandbox Code Playgroud)

bar在这里更新的正确方法是什么?

我做了正确的构建设置并添加了@objc标签并导入了project_name-swift.h. 实施并修改了https://medium.com/@iainbarclay/adding-swiftui-to-objective-c-apps-63abc3b26c33 中的示例, 但由于我在这些环境中缺乏经验,所以有点迷失。

也许有人可以将我推向正确的方向。

谢谢你。

假设我的项目名称是Project.

示例代码:(与此非常相似的代码,编译良好,目标 C 函数调用,但在快速方面,我没有输出到控制台,文本也没有呈现。如果您指出我的错误,我将不胜感激,因为我很少参与 iOS 开发。)

内容视图.swift …

objective-c ios swift swiftui

5
推荐指数
1
解决办法
2540
查看次数

Safari getUserMedia() 未处理的承诺拒绝

按照互联网上的建议,我将mutedplaysinline属性添加到我的视频元素中。我仍然无法在 Safari 11 中获得愿景,但只有这个错误。我还尝试autoplay从我的视频元素中删除。

Unhandled Promise Rejection: TypeError: Type error

是否可以webrtc在 Safari 11 中工作,或者我是否在浪费时间?

getUserMedia() 适用于所有其他浏览器(Chrome、Firefox、Edge、Opera)。

谢谢!

我使用这个垫片,https://github.com/addyosmani/getUserMedia.js/blob/gh-pages/lib/getUserMedia.js这会返回一个成功回调,

然后在回调中,

var video = camOptions.videoEl; //the video element

var vendorURL = window.URL || window.webkitURL;

try {
    video.src = vendorURL ? vendorURL.createObjectURL(stream) : stream;
}
catch(err) {
    //HERE IS THE TYPE ERROR IN SAFARI
}
Run Code Online (Sandbox Code Playgroud)

javascript safari cross-browser webrtc getusermedia

2
推荐指数
1
解决办法
5704
查看次数