ARC

2013-02-16 16 views
6

'u kullanırken EXC_BAD_ACCESS kodunu = 2 nasıl hata ayıklayabilirim EXC_BAD_ACCESS kodu = 2'yi çözme konusunda burada bir çok iş parçacığı görüyorum ve konsensüs dizime erişmeye çalıştığım gibi görünüyor veya bir nesne dizimi daha önce yayınladıktan sonra. Çoğu zaman çözümlerin kodlarında çok fazla [Release the release] varmış gibi göründüğünü görüyorum. Benim için sorun, herhangi bir sürüm çağrısı yok, çünkü ARC kullanıyorum.ARC

Bu yüzden sorum, bu noktayı kendim hata ayıklama hakkında nasıl giderim. Eğer yardım ederse kodu gönderebilirim, ama ilk adım olarak, bir sonraki adımın ne olması gerektiği ve nasıl yapılacağı konusunda yardım istiyorum.

Birçok sorunun, sorunun kaynağını bulmak için NSZombiesEnabled özelliğini açmam gerektiğini söylediği görülüyor.

Zombiler etkinleştirilmeden önce uygulamam kesinlikle bir hata veya uyarı olmadan oluşturulup çalıştırılacaktı. Fakat simülatördeki bir düğmeye dokunduğunuz anda çökecektir.

Zombies'i açtıktan sonra, uygulama hala hata oluşturuyor ve çalışıyor, ancak simülatör göründüğü anda kilitleniyor ve şimdi XCode, 1. Adım altındaki Debug Navigator'a geçiyor ve 100.000'den fazla giriş var. Tıkladığınız her biri, ana pencerede ne anlama geldiğini bilmediğim bazı şeyler gösterir.

Şimdi, ne yapıyorum? Zombileri açtım ve tekrar koştum, ekranda bir sürü şey görüyorum, ama gerçekten nasıl kafa ya da kuyruk yapılacağını bilmiyorum. Bir ekran görüntüsü göndermeyi denedim, ancak henüz yapma yetkim yok.

+0

Yardım edebilmek için bazı kodlara ihtiyacımız var. EXC_BAD_ACCESS satırının etrafına kod eklediğinizden emin olun. ARC ile, bellekle ilgili hataların çoğu ARC tarafından otomatik olarak halledilir, çünkü tahsis eder ve serbest bırakır ve üst üste gelmemesini sağlar. Bunu söyledikten sonra, kod mantığına bağlı olarak, bu olabilirdi. Yani kodu lütfen gönderin. – Spectravideo328

+0

İçindeki tüm projeye sahip bir github hesabı eklendi. Şimdi her şeyi görebilirsiniz. Gördüğünüz gibi: https://github.com/jonathan3087/Matchismo – jonathan3087

cevap

18

Kaynak kodunuzu inceledim ve sorunu buldum. numberOfMatchingCards özelliğini ayarlayarak, sonsuz bir döngü oluşturarak, tembel yükleme game'un ortasında konumlandırmaya çalışıyorsunuz. self.game.numberOfMatchingCards, oyununuzu başlattığınız zamana göre oyununuzu başlatmayı bitirmediğiniz için yeni bir oyun yüklemeye çalışacak. Sadece

- (IBAction)cardModeChanged:(UISegmentedControl *)sender { 
    switch ([sender selectedSegmentIndex]) { 
     case 0: 
      _game.numberOfMatchingCards = 2; 
      break; 
     case 1: 
      _game.numberOfMatchingCards = 3; 
      break; 
     default: 
      _game.numberOfMatchingCards = 2; 
      break; 
    } 
} 

Bunun senin kötü erişim sorunu çözecektir emin değilim için

- (IBAction)cardModeChanged:(UISegmentedControl *)sender { 
    switch ([sender selectedSegmentIndex]) { 
     case 0: 
      self.game.numberOfMatchingCards = 2; 
      break; 
     case 1: 
      self.game.numberOfMatchingCards = 3; 
      break; 
     default: 
      self.game.numberOfMatchingCards = 2; 
      break; 
    } 
} 

değiştirmez, ancak ayıklama gezgin girişlerin birçok sebebi var. Bu sorunu giderdikten sonra hala kötü erişim sorununuz varsa lütfen bize bildirin. ARC'yi kullanmanıza rağmen, nesnelerin hala serbest bırakıldığını (referans sayımları sıfıra düştüğünde) hatırlamanız önemlidir.

+0

Bu sorunu çözdüm, artık hata ayıklama gezgininde pek çok girdiye neden olan sonsuz döngüyü alamıyorum. Ayrıca EXC_BAD_ACCESS sorununu çözdüm. Şimdi, temiz bir yapıya kavuşuyorum ve şimdi uyarılar ile birlikte hiçbir hata yapmam. Buna baktığınız zaman için teşekkürler, saçlarımı çekiyordum. – jonathan3087

+0

Sorun değil. Herşeyin çalıştığıma sevindim! – enjayem