Saya cukup baru untuk xcode dan objektif-c. Saya ingin mengajukan pertanyaan yang sangat mendasar.
Saya melihat bahwa ketika "menautkan biner ke perpustakaan" di pengaturan proyek, ada perbedaan tentang kerangka kerja dan perpustakaan, yang diimpor dari proyek lain di ruang kerja.
Pertanyaan pertama, mengapa ada kerangka kerja? Dan mengapa ada perpustakaan? Tidak bisakah perpustakaan saya menjadi kerangka kerja?
Dan kemudian, dari file .h , bagaimana saya bisa memanggil kelas dari perpustakaan statis impor saya?
Saya kira harus ada awalan, tetapi saya tidak dapat menemukannya. Baik "ProjName / Myclass.h" tidak berfungsi.
Tolong, sespesifik mungkin.
Terima kasih
objective-c
xcode4
static-libraries
Leonardo
sumber
sumber
Jawaban:
Keuntungan terbesar kerangka kerja memiliki lebih dari perpustakaan statis adalah mereka bertindak sebagai cara yang rapi untuk mengemas biner perpustakaan yang dikompilasi dan header terkait lainnya. Mereka dapat dimasukkan ke dalam proyek Anda (seperti kerangka kerja built-in SDK seperti Foundation dan UIKit) dan mereka seharusnya bekerja (sebagian besar waktu).
Sebagian besar kerangka kerja berisi perpustakaan dinamis; kerangka kerja yang dibuat dalam Xcode menggunakan templat Kerangka Mac akan membuat perpustakaan dinamis. IPhone tidak mendukung kerangka kerja dinamis yang menjadi alasannya mengapa perpustakaan yang dapat digunakan kembali dari kode iOS dapat didistribusikan sebagai perpustakaan statis.
Perpustakaan statis baik-baik saja, tetapi mereka membutuhkan sedikit kerja ekstra dari pihak pengguna. Anda perlu menautkan proyek Anda ke perpustakaan dan Anda perlu menyalin file header ke proyek Anda atau referensi mereka di suatu tempat dengan mengatur jalur pencarian header yang sesuai dalam pengaturan build Anda.
Jadi: dalam ringkasan, pendapat saya adalah bahwa cara terbaik untuk mendistribusikan perpustakaan Anda adalah sebagai suatu kerangka kerja. Untuk membuat kerangka "statis" untuk iOS, Anda pada dasarnya dapat mengambil kerangka kerja normal dan mengganti biner dengan pustaka statis terkompilasi Anda. Ini adalah bagaimana saya mendistribusikan salah satu perpustakaan saya, Resty dan bagaimana saya bermaksud untuk mendistribusikan perpustakaan saya di masa depan.
Anda mungkin ingin melihat Rakefile yang disediakan dalam proyek itu (jika Anda tidak sadar, Rake adalah setara dengan Make dari Ruby). Saya memiliki beberapa tugas untuk mengkompilasi proyek saya (menggunakan
xcodebuild
) dan mengemasnya sebagai kerangka kerja statis untuk iOS. Anda harus menemukan ini berguna.Atau, Anda mungkin ingin menggunakan templat Xcode 4 ini untuk membuat kerangka kerja iOS.
Pembaruan 9 Des 2013 : ini adalah jawaban yang populer jadi saya pikir saya akan mengedit untuk mengatakan bahwa pilihan pertama saya untuk distribusi perpustakaan telah berubah. Pilihan pertama saya untuk perpustakaan pihak ketiga mana pun sebagai konsumen atau produsen adalah CocoaPods. Saya mendistribusikan perpustakaan saya menggunakan CocoaPods dan menawarkan perpustakaan statis yang sudah dikompilasi dengan header sebagai opsi mundur.
sumber
pada dasarnya, kerangka kerja adalah perpustakaan dan menyediakan mekanisme yang berguna untuk bekerja dengannya. Jika Anda melihat "di dalam" kerangka kerja, itu hanya direktori yang berisi pustaka statis dan file header (dalam beberapa struktur folder dengan metadata).
Jika Anda ingin membuat kerangka kerja Anda sendiri, Anda harus membuat "perpustakaan statis" dan mengemasnya dengan cara tertentu. lihat pertanyaan ini
Secara umum, bingkai di platform digunakan untuk perilaku yang dapat digunakan kembali di mana Anda menambahkan kode Anda sendiri "ke dalam kerangka kerja yang ada". jika Anda ingin memiliki beberapa fungsi spesifik, Anda mungkin ingin menggunakan perpustakaan (misalnya three20) dan memasukkannya ke dalam aplikasi Anda yang dapat didistribusikan
sumber