EXC_BAD_ACCESS sorunlarını nasıl çözeceğimi biliyorum, ancak bunun için nasıl birim testi yapacağımı bilmiyorum. EXC_BAD_ACCESS kodunu basitçe kilitlemek yerine kodda yakalamanın bir yolu var mı? İşteEXC_BAD_ACCESS için nasıl birim testi yapabilirim?
soruyorum nedeni şudur: Böyle ağır blokları kullanan bir kütüphane yazdım:
doSomething:
benim uygulamasında
- (void)doSomething:(void (^)())myBlock;
böyle, sonuçta bloğu çalıştırmak için gidiyorum:
çözelti bloğu mevcut olduğunu kontrol etmek için, bu nedenlebir arayan bloğu için nil geçerse
myBlock();
, o zaman, bu gibi,
EXC_BAD_ACCESS
kilitlenmesine:
if (myBlock) {
myBlock();
}
Bu nil çekinin unutulması oldukça kolaydır, bu nedenle, çökme meydana geldiğinde başarısız olan bir birim testi yazmak için bir yol istiyorum. Bir çöküşün test başarısızlığı olarak düşünülebileceğini sanıyorum, ama sanırım bir kazadan ziyade güzel bir hata mesajı görmek için testleri çalıştırmaya çalışanların daha iyi olacağını düşünüyorum. Herhangi bir fikir? Bu şekilde çalışmaya devam yöntemle önce yerine getirilmesi gereken ön şartları zorlar
NSAssert(myBlock != nil, @"myBlock must not be nil")
:
Bu çok ilginç. İlk denemede, ne yaptığımın bir önemi yok, ama bu proje bir Cocoa Touch statik kütüphanesi olarak hedefleniyor ve testleri yürütmek iPhone Simulator'u başlatıyor. Fork() 'ın orada çalışacağını düşünmüyorum, bu yüzden bir Mac/Cocoa hedefi olarak da deneyeceğim ve ne olacağını göreceğim. Teşekkürler! – greenisus
Ooh, evet, fork() 'iOS'ta bile kullanılabilir mi, bilmiyorum.Bunu tamamen doğru şekilde çalışmak için sorun yaşıyorum; Bir şey bulursam güncellenir. –