2011-10-28 25 views
6

Gazetelik'i yeni bir iOS uygulamasına entegre etmeyi araştırıyorum ve uygulamanın iOS 5'e geçiş yapmayan cihazlarda yayınlanmasına izin verecek şekilde yapılıp yapılamayacağını öğrenmek istiyorum.Gazetelik ile geriye dönük uyumluluk olmadan entegrasyon

Bir uygulamanın nasıl yönetileceği konusunda bana nasıl bir fikir verebilir?

Farklı hedeflere ve kaynak dosya kümelerine sahip tek bir uygulamaya sahip olmanın mümkün olduğunu biliyorum, ancak codebase'i olabildiğince birleşik tutmayı ve Newsstand özelliklerini dinamik olarak test etmeyi tercih ederim.

cevap

5

Öncelikle uygulamanızı NewsstandKit çerçevesine zayıf bir şekilde bağlamak için yapmanız gerekenler. Bu, iOS sürüm < 5 olan bir aygıtın eksik kitaplıklar nedeniyle çökmesine engel olur.

Daha sonra çalışma zamanında NK yöntemlerini çağırmaktan ve iOS < 5'de bulunmayan NK sınıflarına başvurmaktan kaçınmanız gerekir. Böyle bir durumda, NSClassFromString() veya başka bir nesne-çalışma zamanı özellikleri gibi yöntemleri kullanabilirsiniz. Bu özelliklerin varlığını dinamik olarak algılar.

Böyle bir durumda yapabileceğimiz bir öneri, tüm Newsstand öğelerini derleme düzeyinde ayırmanızı sağlayan bir ön derleyici yönergesi sağlamaktır. Bu şekilde, SDK 4 kullanarak derlemeyi deneyebilirsiniz (eğer varsa) ve derleyici hataları veya uyarıları görebilirsiniz.

E.g. Bu


#define WILL_USE_NK 

sevdiği Prefix.pch bir tanım eklerseniz o zaman bu şekilde tüm NK başvuruları paranteze edebilirsiniz:

Daha sonra

#ifdef WILL_USE_NK 
... your NK statements go here ... 
#endif 

Eğer SDK4 uygulamayı derlemek zaman, bunu tutmak Bu yüzden iOS4 cihazları için geçerli olan gerçek bir SDK4 derlemeniz (test edebileceğiniz) olacak ve tüm NK referanslarınızın bir iOS4 uygulaması tarafından kullanılmadığından emin olacaksınız. Ardından, bu dağıtımı vermeden önce # bu tanımın yerine getirmeli ve SDK5 ile derlemelisiniz (elbette bazı iOS 4.x'i minimum hedef olarak tutmalısınız).

Elbette bu şekilde olası tüm hatalara karşı korunmazsınız, ancak en azından NK referanslarını ayırdınız.

Uygulamanın iş mantığı hakkında daha iyi bir strateji olduğu kadarıyla, bu size kalmış: Artık Newsstand, arka plan indirmesi gibi pek çok yönüyle ilgileniyor. Derginin modeli artık mevcut modeliniz ve NKIssue özellikleri arasında bölünmüştür, ancak bunların hepsi bu özel sorunun ötesine geçen uygulama ayrıntılarıdır.

+0

Merhaba Viggio, bu harika bir fikir, teşekkürler. Bu, geriye doğru uyumluluk sorunlarına yol açabilecek parçaları ayırırken, kodumu bir arada tutmamı sağlar. Çok teşekkürler! – James

İlgili konular