po命令有點無用,至少除非有一些符文必須投入才能使它有用,在這種情況下它們是什麼?如何使用po或等價物來檢查控制檯或Xcode中的iVar?
例如,利用這個代碼:
MyClass *myClass = ...
NSLog(@"stuff: %@", myClass.stuff);
如果運行在Xcode這個代碼,並試圖調試那麼PO表現爲:
(gdb) po myClass
<MyClass: 0xee34567>
(gdb) po myClass.stuff
There is no member named stuff
它爲什麼要這樣做。有一個叫做stuff的屬性,NSLog在查看它時沒有問題。所以如何檢查Xcode中的成員變量,我知道這個問題在此之前已經有很多次了,但是在閱讀之後,我仍然找不到一個體面的方式來做這件事。
Obj-C屬性使用C結構語法,但將其應用於指向結構體的指針,而不是結構體自身。因此「沒有名字的成員」。但是,gdb理解「正常」的Obj-C消息語法,因此[myClass stuff]有效。 – Costique 2012-01-27 20:41:28