kullanılmadan önce bazı tanımlanan değere herhangi değişkeni ayarlamak için bir çok iyi uygulamadır olsun. Bunu yapmamak her türlü soruna yol açacaktır. Geri kalan, kullandığınız araçlara çok bağlıdır. Eğer bunu kullanabilir ya da nerede kullanılacağını önce derleyici o tanımlandığını ispat edemez önce tanımlanmamış bir değişken kullanıyorsanız
İyi derleyici söyleyecektir. Kötü bir derleyici (veya araçlarını nasıl kullanacaklarını bilmeyen bir geliştirici tarafından kullanılan iyi bir derleyici) bunu yapmayacaktır. İyi bir derleyici ile, sıfırlama veya NULL başlatma, derleyicinin işini düzgün şekilde yapmasını engelleyebilir. İşte
NSString* result;
if (condition) result = @"True";
else if (otherCondition) result = @"False";
return result;
tanımsız bir sonuç döndürebilir çünkü derleyici sizi uyarabilir: Gerçekten kod nil değil ama doğru olsun vermedi bir NSString dönmek istiyorum bu örneğine bakınız. Eğer sonuç sıfırlanırsa, yine de, nil 'i geri vermemesi gereken bir fonksiyonda sıfırlayabileceğiniz aynı probleminiz olur, fakat derleyici sizi uyaramaz. Öte yandan
, değer
sıfır olabilir veya nil kabul edilebilir bir değerdir ve daha sonra nil başlatılıyor, bazı durumlarda farklı bir değere değişkeni ayarlamak için değil planlıyorsanız ince ve iyi gerekiyorsa uygulama.
Özet: Bir derleyiciyi kullanın ve başlatılmamış değişkenler kullanıp kullanmadığınızı söyleyecek şekilde düzgün şekilde ayarlayın. Başlatılmamış değişkenler hakkında bir uyarı alırsanız, sorunu düzeltin, uyarıyı değil.
Derleyicinin bu desen hakkında yüksek sesle şikayet etmesi gerektiğini unutmayın. Daha iyi bir fikir, tekerleği doğrudan sqlite API kullanarak yeniden icat etmemek; Geliştirmenin daha hızlı ilerlemesini sağlayacak veya size bir bütün olarak sistemle çok daha iyi bir bütünleşme sağlayacak olan Çekirdek Verileri kullanabileceğiniz daha yüksek düzeyli API'ler sağlayan 3. taraf paketleyicileri vardır. – bbum
Yorum için teşekkürler bbum. Kesinlikle haklısın. – objlv