我按照这个教程中描述的步骤进行了操作。
我试图将Objective-C代码翻译成Swift。以下是我的代码:
var l2tpInterface = SCNetworkInterfaceCreateWithInterface(
kSCNetworkInterfaceIPv4,
kSCNetworkInterfaceTypeL2TP
).takeUnretainedValue();
var pppInterface = SCNetworkInterfaceCreateWithInterface(
l2tpInterface,
kSCNetworkInterfaceTypePPP
).takeUnretainedValue();
var prefs = SCPreferencesCreate(nil,"SoybeanVPN",nil).takeUnretainedValue();
var service = SCNetworkServiceCreate(prefs, pppInterface).takeUnretainedValue();
var success = SCNetworkServiceEstablishDefaultConfiguration(service);
这段代码在第一行返回一个运行时错误 EXEC_BAD_ACCESS(code=1)
。
我搜索了这个错误,有人说这个问题是由于在Objective-C中使用已释放的对象造成的?在Swift中也是如此吗?有没有任何人在Swift中创建VPN的经验?
更新:
我尝试进行调试,并发现kSCNetworkInterfaceIPv4
的const值无效,参见附图:
这是Swift的一个bug吗?