2014-06-09 25 views
29

Bir breakpoint setim var ve UITextField ürünümün süper görüntüsünü yazdırmak istiyorum. Ben po myTextField.superview tip ama aşağıdaki hatayı alırsınız:Xcode LLDB Baskı Bildirimleri Başarısız - NSUndoManager

error: instance method 'undoManager' has incompatible result types in different translation units ('id' vs. 'NSUndoManager *') 
note: instance method 'undoManager' also declared here 
error: 1 errors parsing expression 

yapar ne demek ve nasıl benim Superview yazdırabilirsiniz? Kodda bir janky çözümü sağlayan bir bağlantı buldum: http://openradar.io/15890965, ancak daha iyi bir çözüm istiyorum.

+0

Aynı hikaye burada: "UITableView" kategorisinde "tableView.gestureRecognizers" işlevini deniyorum. – Drux

+3

Bu hatayı, çerçeve, sınırlar, özyinelemeDescription, kısıtlamalar vb. (Yalnızca yerleşik yöntemler) denemeye çalışırken birçok kez gördüm. Sakat bir xcode/lldb hatası gibi görünüyor. – kylefinn

cevap

2

Dünyanın insanları: Bir cevabım var!

atlatmak için

tüm UIKit hataları: senin po ifadeyi yazarak önce satırı yazın - Eğer küresel uygulamanıza için bu etkinleştirmek istiyorsanız expr @import UIKit

ardından uygulama temsilcinize aşağıdaki kesme noktası ekleyin:

güncelleme için Craig Hockenberry ve Steve Streza için

enter image description here

teşekkürler (here bulundu).

+0

Bu makalede, bunu tüm projeler için nasıl açacağınız anlatılmaktadır: http://merowing.info/2015/12/little-things-that-can-make-your-life-easier-in-2016/ – rizzes

0

myTextField gerçekten UITextField işaret ediyor mu? Bu hatanın ortaya çıkmasının tek nedeni budur. Örneğin, aşağıdaki kod derlenecek ve üçüncü satırda bir kesme noktası belirlerseniz, gördüğünüz hatayı yeniden üretmek için po b.superview girebilirim.

NSString *a = @"not a view"; 
UITextField *b = (UITextField *)a; 
UIView *view = b.superview; 

aslında UITextField olmadığını görmek için LLDB isteminde po [myTextField class] yazmayı deneyin. Başka bir nesne türü veya nil olabilir.

+0

'myTextField' 'UITextField' (bir çıkıştan) işaret eder. – rizzes

1

Hata ayıklama sırasında bu hatayı önlemek için kullandığım çözüm için herşeyi açıkça atıyor. Senin durumunda

Ben

po [(UITextField *)myTextField superView] 
+0

İlk testten, bu benim için işe yarıyor gibi görünüyor. Bununla birlikte, yukarıdaki bağlantıdaki ikinci yorum (http://openradar.io/15890965), açıkça yayınlandığında bile bunların kendileri için olduğunu iddia etmektedir. Başkası olmak isteyen var mı? – rizzes

+0

Açıkça döküm işlemini denedim ve yine de bu hatayı aldım. Örneğin. po (NSString *) [((IBAdBannerView *) adView) recursiveDescription] –

1

sen 'myTextField' için herhangi bir özel erişimci yöntemleri var mı yapardınız? Aynı sorunu birkaç kez görmüştüm ve genellikle, ilk kez alıcısı çağrıldığında başlatılan bir nesne için bir özellik yazdırmaya çalışmaktan kaynaklanmaktadır. Örneğin, bir UITableViewCell üzerinde 'po self.imageView.contentMode' çalıştırmayı denediğimde aynı hatayı alıyorum. Kesme noktanızı, kodda 'myTextField' öğesinin tam olarak başlatıldığını bildiğiniz bir noktaya taşımayı deneyin.

+0

myTextField için özel bir erişimci yöntemim yok. İyi düşünülmüş olsa da. – rizzes

0

Xcode 5.1.1'de bu hatayı alıyorum ve Xcode 5.1.1'i bırakıp Xcode 6'yı deneyerek bu sorunu çözdüm. Xcode 5.1.1 için Xcode 5.1.1'in yeniden başlatılması bazı kişiler için de kullanılabilir.

+0

Bu hatayı Xcode 6 ile henüz bulamadım, bu yüzden Apple bunu düzeltmiş olabilir. Emin olmamızdan biraz daha zaman alacak. – rizzes