Saat menggunakan kerangka kerja eksternal, Xcode sekarang memiliki Binari Tertanam serta Kerangka Tertaut .
Saat Anda mengunduh kerangka eksternal dan Finder-> seret ke Xcode, itu akan menempatkan kerangka kerja ke Kerangka dan Perpustakaan Tertaut .
Saat Anda membangun perpustakaan dengan Kartago, disarankan untuk menyeret ke Binari Tersemat .
Keduanya tampaknya bekerja dalam hal keterkaitan, karena API tersedia dengan cara apa pun, lebih jauh lagi saat menambahkan kerangka kerja ke dalam Binari Tersemat apakah itu juga secara otomatis ditambahkan ke dalam Kerangka dan Perpustakaan Tertaut bagian .
Jadi siapa yang benar? Kartago atau bagian internet lainnya? dan mengapa ada 2 opsi untuk memasukkan sumber daya eksternal ke dalam proyek Xcode?
Jawaban:
Menghubungkan- Kita harus menautkan kerangka kerja jika kita menggunakan API apa pun yang ditentukan di dalamnya.
Penyematan - Proses ini akan memastikan kerangka kerja tambahan akan disematkan dalam App bundle, dan berpotensi membantu berbagi kode antara aplikasi, dan bundel ekstensi apa pun. Kami hanya menyematkan kerangka kerja pihak ketiga dan bukan yang disediakan oleh iOS karena sudah tersedia di perangkat. Jika kita menyematkan, itu artinya, kita perlu menautkannya juga sehingga Xcode dapat mengkompilasi dan membuat build. Saat aplikasi berjalan di perangkat, framework yang disematkan akan dimuat ke memori saat diperlukan.
sumber
embed
dan bukanlink
? Dan sebaliknya? Dan mengapa?Jika Anda menyematkan biner, itu akan dimasukkan ke dalam produk Anda. Jika Anda hanya menautkan pustaka atau kerangka kerja tanpa menyematkannya, itu tidak akan menjadi bagian dari produk Anda.
Namun, di iOS8 semua kerangka kerja pihak ketiga harus "disematkan". Bahkan kerangka kerja yang digunakan bersama di antara berbagai program perlu "disematkan" ke setiap program tersebut. Dalam kasus di mana ia diinstal pada perangkat di lokasi bersama, proses penginstalan lain yang menggunakan kode "tertanam" yang sama dari lokasi bersama dapat menggunakan kembali penginstalan yang ada. Ini khusus untuk iOS8, belum mungkin sebelum iOS8 dan di luar dunia iOS jawaban ini tidak akan akurat.
sumber
Linking
lebih lanjut tentangLinker
yang berfungsi pada waktu kompilasi atau waktu muat / jalankan.Linker
salin aLibrary
ke biner target. KarenaFramework
bersifat otonom,Linker
dalam hal ini, bertanggung jawab untuk menemukan dan menautkan diDynamic Framework
dalam jalur pemuat sistem atau untuk menemukan dan menautkan di dalam bundel .Embedding
adalah proses menyalin biner ke biner target. Hasilnya akan ditempatkan di dalam.Baca lebih lanjut di sini
sumber
Untuk saya pahami, biner tertanam hanya menyertakan kerangka dinamis yang tersedia di iOS 8 ke atas, jika tidak, Anda hanya dapat menautkan kerangka kerja yang statis.
sumber