2012-12-23 14 views
20

Próbuję debugować moją aplikację na iOS za pomocą lldb i robię naprawdę dziwne błędy podczas debugowania.Błąd lldb: właściwość nie została znaleziona na obiekcie typu

Kilka linijek przed moim przerwania, mam:

CGRect frame = view.frame;

Które mogę przejść bez problemów z print frame polecenia w lldb. Jednak, gdy próbuję otworzyć klatkę ponownie w lldb, wpisuję print view.frame i pojawia się następujący błąd:

error: property 'frame' not found on object of type 'UIView *'

To nie ma sensu, jak mogę zweryfikować view jest instancją UIView* i ma ważna właściwość o nazwie ramka wpisując po view i uzyskanie poprawnych wyników:

(UIView *) $4 = 0x1e199bf0 <MyAppCustomView: 0x1e199bf0; frame = (3398 3396; 204 208); layer = <CALayer: 0x1e199ce0>>

Ten szczególny błąd lldb zdarza mi dużo i mogłem nie znajduje przyczyny tego błędu. Ktoś zasugerował na Property 'count' not found on object of type 'NSMutableArray *' PO command in lldb, że można użyć gdb jako (gdb) p view.frame, ale dostaję error: '(gdb)' is not a valid command. i podejrzewam, że polecenie gdb "zadziałałoby"? w każdym razie w innym debugerze.

Jakieś sugestie lub obejścia tego błędu, który występuje losowo?

+0

druku [zobacz ramka] –

+0

już próbowałem: błąd: nie znana metoda '-frame'; wyślij wiadomość wyślij do metody zwracania typu –

+0

wydrukuj ramkę widoku [(UIView *)] nie działa ani –

Odpowiedz

50

Notacja punktowa dla wysyłania wiadomości nie jest obsługiwana w pliku lldb. Używać notacji nawiasu i oddanych wynik CGRect:

p (CGRect)[view frame] 
+0

(lldb) p [ramka widoku] błąd: brak znanej metody "-frame"; wyślij wiadomość, wyślij do metody zwracania typu: –

+0

po edycji, która zadziałała. Jakiekolwiek powody, dla których powinienem rzucić to? i jakiekolwiek pomysły, dlaczego czasami by się to zdarzało, a poza tym lldb działa bezbłędnie przy użyciu polecenia po/print bez żadnych rzutów? –

+3

@ canpoyrazoğlu Ponieważ gdy LLDB odpytuje środowisko wykonawcze, nie jest świadomy typów obiektów, które nie mają być drukowane, rzutowanie daje obiecany typ. – CodaFi

3

Tylko w przypadku wyżej nie działa (co nie miało dla mnie, patrząc na ramie o zmiennej komórce, klasa pochodzi od UITableViewCell): zmuszając dodatkowych nawiasów wydawało się pomóc lldb za mały mózg śpiewka:

p ((CGRect)[cell frame]) 

presto Magico:

(CGRect) $5 = origin=(x=0, y=0) size=(width=320, height=44) 
+0

Ta odpowiedź powinna być akceptowaną odpowiedzią, ponieważ ta lldb wciąż narzeka bez zewnętrznych nawiasów. – inix

Powiązane problemy