Mach-O dosya biçimi (Mach Nesnesi - .o
)
İOS dünyasında her kaynak dosya nesne dosyalarına dönüştürülür - ABI [Hakkında] Mach-O dosyası [Hakkında] , son bir yürütülebilir pakete (örn. Uygulama, çerçeve ...), dosyaya (örn. Kütüphane ...) ve davranışı [Hakkında] tarafından belirlenirMach-O type
Package
kendisini bir dosya olarak gören bir dizindir opaque file
. Kullanıcı deneyiminin , öngörülemeyen program davranışına neden olabilecek iç yapıda bazı değişiklikler yapmayı zorlaştırması için yaratılmıştır . Paket, içinde Document Package
veya ile kullanılır Bundle
. Show Package Contents
Finder'da kullanabilirsiniz
Bundle
ikili kod (yürütülebilir kod) ve bu kod için kaynakları (ör. resimler, uçlar ...) düzenlemek için belirli bir yapıya sahip bir dizindir. Paket Info.plist
[Hakkında] dosyası içerir . Paket geliştirici deneyimi için oluşturuldu . Ayrıca paketlenebilir. Birkaç paket türü vardır:
application bundle
- Application target
framework bundle
ve versioned bundle
bir alt tür olarak -Framework Target
loadable bundle
(aka plug-in bundle
) - Bundle target
(Kullanıcı Arayüzü Test Paketi, Birim Test Paketi)
- diğerleri (
dSYM
[Hakkında] paketi)
Application
- .ipa
, .app
[Hakkında] - packaged
application bundle
- yıkanabilir program.
Tests
- packaged
loadable bundle
bir ikili testi test etmek için kullanılır. Eklenti mimarisi, mevcut ikili dosyaya ayrı bir modül olarak yeni bir işlev (test senaryoları) eklememizi sağlar
Kütüphaneler ve Çerçeveler
InversionOfControl için Martin Fowler
Bir Kütüphane aslında arayabileceğiniz bir dizi işlevdir, bu günlerde genellikle sınıflar halinde düzenlenmiştir. Her çağrı bir iş yapar ve kontrolü istemciye döndürür.
Bir Çerçeve, içinde daha fazla davranış bulunan bazı soyut tasarımları içerir. Bunu kullanmak için, davranışınızı alt sınıflandırma veya kendi sınıflarınızı takarak çerçevedeki çeşitli yerlere eklemeniz gerekir. Daha sonra çerçevenin kodu bu noktalarda kodunuzu çağırır. Programın ana kontrolü ters çevrilir, sizden çerçeveye taşınır. (Kontrolün Ters Çevrilmesi)
İOS'ta Kitaplıklar ve Çerçeveler
Library
Mach-O nesne dosyalarının bir koleksiyon [çek statik veya dinamik] Bir veya daha fazla mimarileri için derlenmiş.
Static library
- .a
(diğer adıyla statik arşiv kitaplığı, statik bağlantılı paylaşılan kitaplık [doc] ) - Uygulamanıza eklediğinizde, derleme süresi boyunca statik bağlayıcı , nesne dosyalarını kitaplıktan birleştirir ve uygulama nesnesi dosyalarıyla birlikte tek bir yürütülebilir dosyaya paketler dosya. Dezavantajı büyük bir çıktı dosyasıdır
Xcode 9.0'dan Swift statik kitaplığı desteklenir.
Dynamic library
- .dylib
(dinamik paylaşılan kitaplık, paylaşılan nesne, dinamik olarak bağlı kitaplık [doc] olarak da bilinir ), uygulamanın yükleme veya çalışma zamanında çalıştırılabilirine dinamik olarak bağlanır , ancak kopyalanmaz. Uygulamada uygulamanın paketi dosya içeren Frameworks klasörünü içerecektir . Tüm iOS ve macOS sistem kütüphaneleri . Dezavantaj, tüm dinamik kütüphanelerin kopyalanması ve bağlanması gerektiğinden yavaş bir başlatma süresidir..dylib
dynamic
[Statik ve dinamik bağlantı]
Text-based stub library
- .tbd
[Hakkında] , dynamic library
hedef cihazda bulunan bir metin saplamasıdır . Sonuç olarak, dinamik bir kütüphaneyi paketinize paketlememelisiniz. Boyut etkisi vardır.
Framework
aka binary framework
- .framework
bir not packaged framework bundle
derlenmiş içeren (geliştiriciler kolayca başlıkları ve kaynaklara bakmak sağlamak için) static or dynamic
kütüphane başlık dosyaları ve kaynakları.
Static framework
static library
kaynakları ile birlikte bir paket içerir .
Dynamic framework
dynamic library
ve kaynaklarını içerir . Buna ek olarak, dinamik çerçeve aynı dinamik kitaplığın farklı sürümlerini tek bir pakette ( versioned bundle
) içerebilir
[Statik ve dinamik çerçeve]
Embedded framework
dynamic framework
uygulamanın sanal alanında yaşayan bir . Bu tür, öncelikle ortak kod ve kaynakları paylaşacak eklenti için oluşturuldu . Dağıtım hedefi iOS 8+ olduğunda kullanılabilir.
Umbrella framework
[Toplam hedef] diğer çerçeveleri içeren bir çerçevedir. İOS'ta resmi olarak desteklenmemektedir ve bu nedenlegeliştiricilerin bunları oluşturmaları önerilmez [Resmi belge] . Gerçekte bu bir alt çerçeve kümesidir (veya İç İçe Çerçeveler). Bağımlılığı olan bir çerçeve oluşturduğunuzda, bir bağımlılık (bir uygulama gibi), bu bağımlılığı çerçevenizle birlikte projeye eklemekten sorumludur. Bir geliştirici olarak, bu görevi tüketiciden sizinkine aktarmanın bir yolunu bulmaya çalışmak doğaldır. Sonuç olarak bununUmbrella framework
kurtarmaolduğunu düşünüyorsunuz,ancak genellikle sürümleri yönetme ve onu oluşturma ve destekleme karmaşıklığı ile ciddi sorunlara yol açıyor.
Fake Framework
-, a olarak davranacak uzantıya sahip static library
bir paket oluşturmak için a altındaki belirli işlemlerin bir sonucudur . Bu teknik, Xcode bir çerçeve şablonuna sahip olmadığından bir çerçeve oluşturmayı desteklemediğinde kullanıldı. Sahte bir çerçevenin gerçekleştirilmesinden biri . Xcode 6 ile Apple, iOS çerçeve desteği ekledi..framework
dynamic framework
Modular Framework
[Hakkında] -içinde@import
bir.modulemap
dosya bulunanbir çerçevedir. Modül alt modüller içerebilir. Başlıca avantajı, bir inşa süresi kazanmanızdırModular Framework
.
Universal Library or Framework
(diğer adıyla Fat) [lipo] [Toplam hedef] çoklu mimariler içeriyor. Örneğin, sürüm derlemeniz [ONLY_ACTIVE_ARCH] aracılığıyla düzenleyebileceğiniz bir kemeri desteklemelidir.Build Active Architecture Only
Dependency
[Hakkında] Hedefinizin bir parçası olarak üçüncü taraf kodunu kullanabilirsiniz. Başka bir proje, aynı çalışma alanındaki proje, başka bir hedef, kütüphane, çerçeve vb.Gibi birçok kaynaktan gelen bir kodu yeniden kullanmanızı sağlar.
Statik Kitaplık nasıl oluşturulur ve kullanılır:
Dinamik Çerçeve nasıl oluşturulur ve kullanılır [statik olarak değiştir]
[Xcode Derleme Sistemi]
[Xcode bileşenleri]
[Dinamik bağlayıcı]