2012-03-27 14 views
15

Bir iOS uygulamasında hata ayıklamaya çalışıyorum ve simülatörde lldb ile ilgili sorun yaşıyorum. Çağrı sınıfı yöntemleri işe yaramıyor. Örnek yöntemleri iyi çalışıyor.iOS simülatöründe lldb ile sınıf yöntemleri nasıl çağırılır?

(lldb) po Category 
<no result> 
(lldb) po [Category class] 
error: Couldn't prepare the expression for execution in the target 
(lldb) po self 
(TagsTableViewController *) $5 = 0x085585a0 <TagsTableViewController: 0x85585a0> 

4.3 ve 5.1 simülatörlerini denedim ancak ikisi de aynı sorunları gösteriyor.

Her şey bir aygıtta hata ayıklandığında iyi çalışır.

+3

Bence lldb'de bir hata olabilir ama bu arada bir çözüm buldum. Bu biraz garip ama işe yarıyor: 'po [(Sınıf) objc_getClass (" ClassName ") sınıfı]' – devioustree

cevap

19

Bu, çalışır. Yukarıdaki yorumda cevap veren @devioustree'ye teşekkürler.

Temel komut bu gibi yapılandırılmıştır:

po [(Class)objc_getClass("ClassName") class] 

someClassMethodHere çağırmak için:

po [[(Class)objc_getClass("ClassName") class] someClassMethodHere] 
0

kabul edilen cevap genişletmek için bu ekleniyor ...

Eğer çalışıyorsanız lldb'deki bir değişkene yeni bir değer atayım, sadece değeri yazdırmak yerine bu gibi bir şey yapmak yerine ...

expr self.myArray = (NSArray*)[[(Class)objc_getClass("NSArray") class] arrayWithObjects:@"valueOne",@"valueTwo",@"etc",nil]