Xcode 11.4: performSelector getting The LLDB RPC server has crashed

334 Views Asked by At

I have a problem with Xcode 11.4 using Swift 5.2 when trying to get value of func when performing a selector. This just occurred with a function that returns a Number or Bool type. That is my code:

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
    }
}

To explain the code, I try to perform an selector to get the value of it for swizzling them in the runtime. Because I don't know how much computed properties in a class will be declared, so I used the class_copyMethodList method to get all the method in cls. Then using some trick to determine the return type - returnReadableType, (in string) of each method. With the returnReadableType are BOOL or NSInteger, I got a crash when performed the selector. The crash log is:

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.

This did not occur in the < Xcode 11.4. I have researched the issue but do not reach any solution or any problem like that. Have anyone got the same issue? And how I can solve this issue?

0

There are 0 best solutions below