Ios Xcode 11.4:获取LLDB RPC服务器的PerformSelect已崩溃
在执行选择器时尝试获取func的值时,使用Swift 5.2的Xcode 11.4有一个问题。这只是在返回数字或布尔类型的函数中发生的。这是我的代码:Ios Xcode 11.4:获取LLDB RPC服务器的PerformSelect已崩溃,ios,swift,xcode,performselector,Ios,Swift,Xcode,Performselector,在执行选择器时尝试获取func的值时,使用Swift 5.2的Xcode 11.4有一个问题。这只是在返回数字或布尔类型的函数中发生的。这是我的代码: if returnReadableType == "NSInteger" { let c: NSObject.Type = cls as! NSObject.Type if let performValue = c.perform(originalSelector)?.toOpaque() { let origin
if returnReadableType == "NSInteger" {
let c: NSObject.Type = cls as! NSObject.Type
if let performValue = c.perform(originalSelector)?.toOpaque() {
let originalResponse: Int = Int(bitPattern: performValue)
configDataResult[name] = originalResponse
}
} else if returnReadableType == "BOOL" {
let c: NSObject.Type = cls as! NSObject.Type
if let performValue = c.perform(originalSelector)?.toOpaque() {
let originalResponse: Bool = Bool(truncating: Int(bitPattern: performValue) as NSNumber)
configDataResult[name] = originalResponse
}
}
为了解释代码,我尝试执行一个选择器来获取它的值,以便在运行时滑动它们。因为我不知道一个类中会声明多少计算属性,所以我使用class\u copyMethodList方法来获取cls中的所有方法。然后使用一些技巧来确定每个方法的返回类型-returnReadableType(字符串)。使用returnReadableType是BOOL或NSInteger,我在执行选择器时遇到了崩溃。崩溃日志是:
Message from debugger: The LLDB RPC server has crashed. The crash log is located in ~/Library/Logs/DiagnosticReports and has a prefix 'lldb-rpc-server'. Please file a bug and attach the most recent crash log.
这在
performSelector
的替代方案是一个选项?您可以使用@convention(c)
显式键入返回值。在这里检查我的答案也许可以选择performSelector
?您可以使用@convention(c)
显式键入返回值。在这里检查我的答案