在iOS开发中,Objective-C(OC)与JavaScript(JS)之间的数据交互通常是通过WKWebView
的WKScriptMessageHandler
协议来实现的。如果在传递数据时发生崩溃,可能是由于以下几个原因:
NSString
而不是NSNumber
来传递字符串。NSString
而不是NSNumber
来传递字符串。以下是一个简单的例子,展示了如何在Objective-C中安全地向JavaScript传递字符串数据:
// Objective-C代码
- (void)sendMessageToJavaScript {
NSString *message = @"Hello from Objective-C";
// 确保在主线程上执行
dispatch_async(dispatch_get_main_queue(), ^{
if (message != nil) {
NSString *jsString = [NSString stringWithFormat:@"receiveMessage('%@')", message];
[self.webView evaluateJavaScript:jsString completionHandler:^(id _Nullable result, NSError * _Nullable error) {
if (error) {
NSLog(@"Error executing JavaScript: %@", error);
}
}];
}
});
}
// JavaScript代码
function receiveMessage(message) {
console.log(message); // 应该输出 "Hello from Objective-C"
}
这种数据交互常见于混合应用开发,其中一部分功能使用原生代码实现,另一部分使用网页技术实现。例如,一个电商应用可能使用原生代码处理支付逻辑,而商品展示页面则使用HTML和JavaScript。
确保在Objective-C和JavaScript之间传递数据时,数据类型匹配,避免内存泄漏,确保UI操作在主线程上执行,并进行空值检查,可以有效防止崩溃问题的发生。
领取专属 10元无门槛券
手把手带您无忧上云