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
Packagekendisini 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 Packageveya ile kullanılır Bundle. Show Package ContentsFinder'da kullanabilirsiniz
Bundleikili 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 bundleve versioned bundlebir 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 bundlebir 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
LibraryMach-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..dylibdynamic
[Statik ve dinamik bağlantı]
Text-based stub library- .tbd[Hakkında] , dynamic libraryhedef cihazda bulunan bir metin saplamasıdır . Sonuç olarak, dinamik bir kütüphaneyi paketinize paketlememelisiniz. Boyut etkisi vardır.
Frameworkaka binary framework- .frameworkbir not packaged framework bundlederlenmiş içeren (geliştiriciler kolayca başlıkları ve kaynaklara bakmak sağlamak için) static or dynamickütüphane başlık dosyaları ve kaynakları.
Static frameworkstatic librarykaynakları ile birlikte bir paket içerir .
Dynamic frameworkdynamic libraryve 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 frameworkdynamic frameworkuygulamanı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 frameworkkurtarmaolduğ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 librarybir 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..frameworkdynamic framework
Modular Framework[Hakkında] -içinde@importbir.modulemapdosya 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ı]