ios - objc_copyClassList : crash EXC_BAD_INSTRUCTION after update to iOS 13. 4/XCode 11.4

标签 ios objective-c swift xcode

更新到 iOS 13.4/XCode 11.4 后

这段代码

func getSubclassInfos() -> [ClassInfo] {
    let superObject = CityModel.self
    let superClassInfo = ClassInfo(superObject)

    var subclassList = [ClassInfo]()
    var count = UInt32(0)
    guard let classList = objc_copyClassList(&count) else {
        return subclassList
    }
    for i in 0..<Int(count) {
        let clazz = classList[i] // Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
        if let classInfo = ClassInfo(classList[i]),
            let superclassInfo = classInfo.superclassInfo,
            superclassInfo == superClassInfo
        {
            subclassList.append(classInfo)
        }
    }

    return subclassList
}

在线崩溃 let clazz = classList[i]EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)在模拟器中。

这行不在我的原始代码中。在这里显示下标崩溃而不是ClassInfo(...)
知道我能做些什么吗?

(代码的灵感来自 List all subclasses of one class )

最佳答案

刚注意到:classList完全是用词不当。返回的结果类型为 AutoreleasingUnsafeMutablePointer<AnyClass>? .将其转换为 UnsafeBufferPointer<AnyClass>首先,然后进行处理:

func getSubclassInfos() -> [ClassInfo] {
    let superObject = CityModel.self
    let superClassInfo = ClassInfo(superObject)

    var count = UInt32(0)
    guard let classListPointer = objc_copyClassList(&count) else { return [] }

    return UnsafeBufferPointer(start: classListPointer, count: Int(count))
        .map(ClassInfo.init)
        .filter { $0 == superClassInfo }
}

关于ios - objc_copyClassList : crash EXC_BAD_INSTRUCTION after update to iOS 13. 4/XCode 11.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60853427/

相关文章:

swift - 检索用于用户名签名 firebase 的用户电子邮件

ios - 如何找到自动增长的 UILabel 的实际高度

ios - AVCaptureSession "output sample buffer"读取像素坐标给出错误的颜色

ios - Objective-C参数中前缀 "_"是什么意思

objective-c - 如何将格式说明符添加到NSURL

Swift 3 - UIPageViewController - 不鼓励在分离的 View Controller 上呈现 View Controller

ios - Swift:网络不可用时Webview提示对话框重新加载当前页面

ios - iphone 应用程序 : put a toolbar on the top

ios - setAttributedText 不适用于 UIButton?

ios - 像 iMessage 这样指示位置的缩略图 URL 最好是什么?