2015-03-25 15 views
13

Bu hatayla ilgili Yığın Taşması konusunda birçok soru var. how Optionals work ve bu error in particular numaralı telefonlarda mükemmel mesajlar okudum. Bununla birlikte, hangi değerin nil olarak ayarlandığını ve hatanın ilk etapta neden olduğunu belirlemenin en iyi yolu hakkında hiçbir bilgi bulamadım.'Ölümcül hata nasıl hata ayıklanır: beklenmedik bir şekilde nil bulunurken isteğe bağlı bir değer'

Hangi isteğe bağlı hataya neden olduğunu bulmak için iyi bir hata ayıklama teknikleri var mı?

cevap

0

Xcode yanlış kod satırında çakılmadı mı?

Bu soruya cevap ama önemli not etmek değildir:

When you are not sure about an optional variable, you have to verify if it contains value or not, by using a pattern like this: 

var myOptional : String? 
if let aString = myOptional { 
    //do your work with aString. 
} 
+0

Bu böyle değil .... /: | – Radu

-2

temelde isteğe bağlı bir değerdir Ne "?" sen ne zaman isteğe bağlı bir veri tipinden sonra, eğer bir paket açılmışsa ve bir nil görünürse, hiç bir hata olmaz, ancak siz "!" veri türü sonra ünlem işareti o zaman değişkeni paketini eğer ve nil sonra çökme var görünüyorsa veya hata sık sık

var myVariable : DataType ? = DataType() 
or 
var myVariable : DataType ? = nil 
or 
var myVariable : DataType ? = value 

Swift de isteğe bağlı olarak opsiyonel kullanmak bir değer veya hiçbir değer ya tutabilecek bir değişkendir. İsteğe bağlılar ekleyerek yazılır.

var myOptionalString:String? = "Hello" 

Bazı yerlerde opsiyoneldir faydalıdır: tipine

  • bir yöntem ne zaman dönebilirim bir tesiste Kişi sınıfına
  • orada, İkinci ad veya eş gibi orada olur muyum olmaz ne zaman Bir değer veya hiçbir şey,
  • dizisindeki bir eşleşme için bir arama ararken ya bir sonuç döndürebilir veya bir hata alıp hiçbir şey döndüremezse
  • Temsilci özellikleri (her zaman ayarlanmamalıdır)
  • Sınıflardaki zayıf özellikler için. Onlar can
    işaret şey olur en az yarım cevabı (
    geri kazanımı hafızasında İşte

https://medium.com/@rrridges/swift-optionals-a10dcfd8aab5

34

için serbest gerekebileceği büyük kaynak için nil

  • ayarlanmalıdır diğer yanıtlayanlar lütfen önce soruyu okuyun!): Gerçek bir iOS cihazı yerine simülatörü kullanın.

    Hata ayıklayıcısına göre, sorun giderilen isteğe bağlı isteğe bağlı bir isteğe bağlı olan satırı işaret etmekte oldukça iyi görünüyor ... çünkü benden hoşlanmıyorsanız, zaman zaman doğrudan iOS aygıtında kod çalıştırmayı seçiyorsunuz. İkinci durumda, hata ayıklayıcı beni, hiçbir mantıklı yığın izlemesi olmayan bazı assembler kodunun ortasında bulur. Simülatöre geri dönmek, doğru kod satırını hatalı olarak verir.

  • +1

    Teşekkürler, bu harika. Bilmek güzel! –

    +2

    Bilmem gereken bu. Ben * ne * sorun var, ama ben çözmek için sorunu çözmek için * nerede sorunu çözmek için, ve ben körü körüne tahmin vurmak iken belirlediğim kesme noktaları hiçbiri anlamaya gerek. –

    +0

    Benim için çalıştı. Xcode bazen böyle bir eşek ... Bunun için teknik bir neden var mı? – CW0007007

    İlgili konular