LLDB(Swift):在Xcode 9 iOS模拟器/设备中将原始内存地址转换为可用类型

时间:2017-09-14 20:10:25

标签: swift xcode lldb

在Xcode 9中调试iOS应用程序时,如何在lldb中投射指向已知Swift对象类型的指针?

我试图在Swift中使用Xcode 9 / iOS 11 SDK中的内存地址打印对象的描述。我一直在使用这里描述的技术:LLDB (Swift): Casting Raw Address into Usable Type(注意:这种技术在调试macOS应用程序时工作正常。)

error: use of undeclared identifier 'to'

但是在调试iOS应用程序时在Xcode 9中的lldb中键入类似语句会产生以下错误消息:

error: use of undeclared identifier 'unsafeBitCast'。或者删除"到:"部分:

unsafeBitCast()

我搜索了Swift <?php sort($terms_array); if( count($terms_array) > 0 ) : foreach($terms_array as $term) : $term = ''; $args = array( 'post_type' => 'book', 'posts_per_page' => -1, 'orderby' => 'menu_order', 'order' => 'ASC' ); $books_query = new WP_Query( $args ) if ( $books_query->have_posts() ) : ?> 方法替换的文档,但我没有提到它的弃用。这是lldb / Swift iOS运行时中的错误吗?

破碎:Xcode 9 + iOS 11模拟器,Xcode 9 + iOS 9.x模拟器,Xcode 9 + iOS 9.x设备
工作:Xcode 8 + iOS模拟器/设备,Xcode 9 + macOS 10.12 app

感谢您的见解。

1 个答案:

答案 0 :(得分:1)

您可以从内存地址创建UnsafeMutablePointer并使用指针pointee属性检索对象:

let object = UnsafeMutablePointer<NSTabViewController>(bitPattern: yourMemoryAddress)?.pointee