cocoa-touch - core foundation与objective-c区别?
怪我咯
怪我咯 2017-04-21 11:16:12
0
1
540

core foundation与objective-c之间有什么关系和区别?

怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(1)
PHPzhong

Rangka kerja Asas Teras (CoreFoundation.framework) ialah satu set antara muka bahasa C yang menyediakan pengurusan data asas dan fungsi perkhidmatan untuk aplikasi iOS. Berikut menyenaraikan data yang disokong oleh rangka kerja untuk pengurusan dan perkhidmatan yang boleh disediakan:

Jenis data kumpulan (tatasusunan, koleksi, dll.)

Pakej

Pengurusan Rentetan

Pengurusan tarikh dan masa

Pengurusan blok data asal

Pengurusan Keutamaan

URL dan operasi aliran data

Benang dan RunLoop

Komunikasi port dan soket

Rangka kerja Asas Teras dan rangka kerja Asas berkait rapat, ia menyediakan antara muka untuk fungsi yang sama, tetapi rangka kerja Asas menyediakan antara muka Objektif-C. Jika anda mencampurkan objek Yayasan dengan jenis Asas Teras, anda boleh memanfaatkan "jambatan bebas tol" antara kedua-dua rangka kerja. Apa yang dipanggil penyambungan bebas tol bermakna anda boleh menggunakan jenis tertentu dalam rangka kerja Asas Teras dan Asas pada masa yang sama dalam kaedah atau fungsi rangka kerja tertentu. Banyak jenis data menyokong ciri ini, termasuk jenis data kumpulan dan rentetan. Setiap kelas dan jenis perihalan rangka kerja akan menerangkan sama ada sesuatu objek itu bebas tol berjembatan dan objek apa yang harus dirapatkan.

Penukaran antara penuding Objektif-C dan penuding CoreFoundation

ARC hanya mengurus penunjuk Objektif-C (kekalkan, keluarkan, autorelease) dan tidak mengurus petunjuk CF CoreFoundation diurus dan diurus secara manual oleh CFRetain dan CFRelease Ambil perhatian bahawa tiada autorelease dalam CF.

Apabila menukar penunjuk CocoaFoundation dan penuding CoreFoundation, anda perlu mempertimbangkan pemilikan objek runcing. ARC menyediakan 3 pengubah suai untuk pengurusan.

1. __bridge, tidak melakukan apa-apa, hanya menukar agama. Dalam kes ini:

i). Menukar daripada Koko kepada Teras memerlukan CFRetain secara manual.

ii). Menukar daripada Teras kepada Koko memerlukan CFRelease manual. Jika tidak, selepas penunjuk Koko dilepaskan, kiraan rujukan objek masih 1 dan tidak akan dimusnahkan.

2. __bridge_retained, secara automatik memanggil CFRetain selepas penukaran, yang membantu menyelesaikan situasi i di atas secara automatik.

3. __bridge_transfer, secara automatik memanggil CFRelease selepas penukaran, yang membantu menyelesaikan situasi di atas secara automatik.

Memandangkan ARC tidak dapat mengurus kitaran hayat Objek Asas Teras, kita perlu menggunakan tiga kata kunci penukaran __bridge, __bridge_retained dan __bridge_transfer antara Teras Teras dan ARC.

Menurut dokumentasi rasmi Apple (https://developer.apple.com/library/i...):

__bridge hanya melakukan penukaran jenis, tetapi tidak mengubah suai hak pengurusan objek (memori);

__bridge_retained (CFBridgingRetain juga boleh digunakan) menukar objek Objective-C kepada objek Asas Teras, dan pada masa yang sama menyerahkan pengurusan objek (memori) kepada kami Selepas itu, kami perlu menggunakan CFRelease atau kaedah yang berkaitan lepaskan objek

__bridge_transfer (CFBridgingRelease juga boleh digunakan) menukarkan objek Asas Teras kepada objek Objektif-C, sambil menyerahkan pengurusan objek (memori) kepada ARC.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan