2012-06-17 33 views
7

Bu uygulamayı AppStore'a göndermek istemiyorum. Birçok kez denedim ama çok fazla sorunla karşılaştım :(iOS Özel API nasıl kullanılır?

UIKit.framework dosyasının tüm üstbilgi dosyalarını almak için class-dump kullanıyorum.Idream-dökümü tarafından oluşturulan UIApplication.h'de, ben yöntemi gördüm.

Sonra Projemde UIApplication.h koydu. ---- launchApplicationWithIdentifier kullanmak istiyorsanız ve içe aktarın. Derleme, çünkü UIKit.framework I ".... numaralandırıcının yeniden tanımlanmasını" hatası çok var Daha önce kullan, başka bir UIApplication.h var. Ama bu dosya launchApplicationWithIdentifier yöntemine sahip değil.

Önceki UIKit.framework'ı silip class-dump tarafından oluşturulan klasörü içe aktarırsam, bir çerçeve gibi görünür. BEN aç, boş.

Daha sonra, tüm oluşturulan üstbilgi dosyalarını önceki UIKit.framework öğesinin yerine bir çerçeve karınca karınca yapmak istiyorum. Ama nasıl olduğunu bilmiyorum. Gördüğümüz gibi, sistem çerçeve dizini altında, çerçeveyle aynı ada sahip ve 'çalıştırılan kabuk betiği' simgesine sahip bir dosya var. Bu dosyayı nasıl yapabilirim?

Gerçekten kafam karıştı. Birisi bana yardım edebilir mi? Teşekkür ederim.

+0

OMG, Başka bir sorunuzda sorunuza cevap ekliyorum: http://stackoverflow.com/questions/11047176/ios-how-can-i-use-uiapplication-launchapplicationwithidentifier-which-is-in -priv –

cevap

7

Bunun gibi, bunu kullanmak istediğiniz sınıf uygulaması üzerinde bir kategori arayüzünde özel yöntemler belirtin:

@interface UIApplication (Private) 

- (BOOL)launchApplicationWithIdentifier:(id)identifier suspended:(BOOL)suspended; 

@end 

orijinal UIKit ile bütün sınıf-döküm dosyası ve bağlantı içe etmeyin çerçeve. Özel API kullanırken çok dikkatli olmalısınız. Bu yöntemler gelecekteki iOS sürümlerinde değiştirilebilir veya kaldırılabilir!

Yöntemin, çalışma zamanında respondsToSelector: ile gerçekten var olup olmadığını kontrol edin ve mevcut olmadığına göre hazırlıklı olun.

Kendi uygulamamda gizli bir MapKit özelliği kullandım ve özel yöntemlerin yalnızca iOS 5'de bulunduğunu biliyordum. Bu nedenle uygulamam tüm iOS sürümlerinde hala çalışıyor ancak bu özellik yalnızca iOS 5'de kullanılabilir (Apple kaldırıldı veya değiştirildi iOS 6 beta 1).

+1

Çalışır. Çok teşekkür ederim :-) Ayrıca, benim uygulama bir deb dosyası dpkg aracı kullanmak ve daha sonra onu yüklemeniz gerekir. Sadece bu şekilde, uygulamam başka bir uygulamayı başlatabilir. – wyp

İlgili konular