我注意到在 Xcode 10 中打印大量文本时控制台日志的性能显着下降。例如,在打印收集服务器数据时就会发生这种情况。是否有任何已知的解决方案或相关信息?
我在 Swift 中使用命令时遇到同样的问题print,但前提是附加了调试器。
我通过检查调试器是否已连接然后使用而NSLog不是 来解决它print。
要检查您的应用程序是否在调试器模式下运行,请参阅此处:检测 Swift 应用程序是否正在从 Xcode 运行
\n\n考虑到 Xcode 8 + iOS 10 及更高版本的日志条目会被截断,请参阅此处:iOS 10 / Xcode 8 设备上的 NSLog 似乎会被截断?为什么\xef\xbc\x9f
\n\n编辑 2019 年 3 月 5 日:
\n\n我使用/sf/answers/2793493251/中的解决方案修复了它
\n\n斯威夫特 4.2:
\n\nextension String {\n func components(withLength length: Int) -> [String] {\n guard length > 0 else {\n return [self]\n }\n\n return stride(from: 0, to: self.count, by: length).map {\n let start = self.index(self.startIndex, offsetBy: $0)\n let end = self.index(start, offsetBy: length, limitedBy: self.endIndex) ?? self.endIndex\n return String(self[start..<end])\n }\n }\n}\n\nfunc amIBeingDebugged() -> Bool {\n var info = kinfo_proc()\n var mib : [Int32] = [CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid()]\n var size = MemoryLayout<kinfo_proc>.stride\n let junk = sysctl(&mib, UInt32(mib.count), &info, &size, nil, 0)\n assert(junk == 0, "sysctl failed")\n return (info.kp_proc.p_flag & P_TRACED) != 0\n}\n\nfunc FixedNSLog(_ format: String, _ args: CVarArg...) {\n\n let maxStringLength = 800\n let string = String(format: format, arguments: args)\n\n let substrings = string.components(withLength: maxStringLength)\n let substringsCount = substrings.count\n\n if substringsCount > 1 {\n NSLog("!!! WARNING !!! The following message is printed by \\(substringsCount) parts, because of Xcode 10 console issues")\n }\n\n substrings.forEach { (substring) in\n NSLog(substring)\n }\n\n}\n\nfunc log(_ message: String) {\n if amIBeingDebugged() {\n FixedNSLog(message)\n }\n else {\n print(message)\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1305 次 |
| 最近记录: |