Özet:iOS 5'e geçiş yaparken dikkat edilmesi gerekenler için kontrol listemize ekleyebilir misiniz? StackOverflow, iOS 5'e yükseltmek için çalıştığım gibi paha biçilmezdi. Xcode 4.2'den önce kaçırdığım bazı oldukça basit şeyleri keşfettim ve diğer "tuhaflıklar" ın gizlenebileceğini merak ediyorum.iOS 5'e geçiş yaparken nelere dikkat etmelisiniz?
Detay: Bu hafta iOS 5 nakliye ile, birkaç uygulamamda bazı değişiklikler yapmak zorunda kaldım. Xcode 4.2, yeni ARC özelliği nedeniyle bellek yönetimi kodunu analiz eden çok daha iyi bir iş yapıyor. IOS 5 güncellemesi, tüm bellek yönetim kodunuzu gözden geçirebileceğiniz mükemmel bir noktadır. Yeni derleyici ayrıca, önceki derleyicilerin kaçırdığı bir dizi başka sorun da buluyor. Apple derleyici mühendisleri için Kudos. İşte size yardımcı olan temel şeyler (ve bunların çoğu, iOS'un önceki sürümlerine de uygulanacak).
- Baştan değil, call [super dealloc] at the END of your dealloc methods olduğundan emin olun. viewDidUnload, some people have reported bugs that require [super viewDidUnload] to be called at the end yılında
- değil başlangıç, sizin viewDidUnload ait.
- Saklama sayılarını, sentezlenmiş ayarlayıcıları ve serbest bırakma veya otomatik oynatmayı ne zaman arayacağınızı öğrenin. Yeni derleyici, eski derleyicilerden daha fazla sorun çıkaracak. (Dikkatli olduğumu sanıyordum ama görünüşe göre yeterince dikkatli değildim.) Apple'ın memory management guide okuması gerekiyor - kısayol yok.
- O (|; Teşhis sekmesinde, Zombi Nesneleri KONTROL Enable Edit Düzeni ... ve hata ayıklama düzenini seçin Xcode, Ürün seçin) turn on zombies when debugging için iyi bir fikirdir. Bu, zombilerin denenmiş kullanımlarını bulmanıza yardımcı olabilir (daha fazla kullanmamanız gereken nesneler).
- Kaçaklar aracı da yararlıdır. Uygulamanızı Profil modunda çalıştırın ve Sızıntıları şablonu seçin. Aletler penceresinde, Sızıntı aracını seçin ve "Sızan Bellek İçeriği Topla" yazan kutuyu işaretleyin ve sızan belleğin kodunuzda nereden kaynaklandığını görmenize yardımcı olacaktır.
Birkaç oran vardır ve karşılaştığınız biter:
- (oneway void) release { }
- Sen may:
- Apple'ın singleton pattern ihtiyaçlarını "tek yönlü" dönüş tipi beyanı eklendi Yapılandırma Ayarlarınızda manually add "armv6" as an architecture type'a gereksiniminiz var (ve Active Architecture Oluşturma Özelliğinin Yalnızca NO olarak ayarlandığından emin olun).
Ben bakmak gerekir potansiyel tehlikelerin Diğer öneriler? Uygulamalarımın artık daha kararlı olduğunu hissediyorum, ama daha önce onlar hakkında iyi hissettim. Onların boyutunu değiştirerek sanki
Bu bellek yönetimi değil, ancak yine de önemlidir: Eğer herhangi bir veri indirir ve aygıta yerleştirmek istiyorsanız, bunu belgeler klasörüne kaydetmemek için dikkatli olun. Bunun için Kütüphane/Önbellek veya tmp kullanın. Veya uygulama verilerini, paket kimliğiniz tarafından eklenen NSApplicationSupportDirectory dosyasına depolayın. Ayrıntılar için http://developer.apple.com/library/mac/#documentation/FileManagement/Conceptual/FileSystemProgrammingGUide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW1 sayfasına bakın. –
Bellek yönetimi de değil. Ancak Güvenlik/Sertifika ile ilgili şeyler yapıyorsanız. MD5 hashed sertifikalarının SecTrustEvaluate üzerinde kSecTrustResultRecoverableTrustFailure döndürdüğünü unutmayın. Ios5, MD5 karmalarının güvenli olmadığını düşünür. – n3utrino
IOS5'e geçiş için başka bir şey, kullanımdan kaldırılmış UDID'dir. http://stackoverflow.com/questions/6993325/uidevice-uniqueidentifier-deprecated-what-to-do-now –