Saya baca di sini Belajar C Sebelum Objective-C?
Biasanya saya kemudian mengganti beberapa kode Obj-C dengan kode C murni (setelah semua Anda dapat mencampurnya sebanyak yang Anda suka, isi metode Obj-C dapat sepenuhnya, kode C murni)
Apakah ini benar?
Apakah mungkin membuat aplikasi iPhone murni dalam bahasa pemrograman C?
Jawaban:
Sial, butuh beberapa saat tapi saya mengerti:
main.c:
AppDelegate.c:
Lihat.c
Itu jelek, tapi berhasil.
Jika Anda ingin mengunduh ini,
Anda bisa mendapatkannya dari dropbox saya di siniAnda bisa mendapatkannya dari repositori GitHub saya di sini :
sumber
@"AppDelegate
adalah NSString yang konstan dan tidak akan dikompilasi dengan kompiler C-only. GunakanCFSTR("AppDelegate")
sebagai gantinya.Objective-C adalah superset dari bahasa-C, jadi secara teori dimungkinkan untuk menulis sebuah program seluruhnya dalam C, namun, kecuali Anda benar-benar berpengalaman
OpenGL ES
, Anda harus melakukan setidaknya beberapa objC (Bahkan sampel Rich memiliki const NSString * di dalamnya), kalau tidak Anda harus menulis sendiri pandangannya.OKE, di atas benar-benar salah. Biar saya katakan, saya heran Rich mencapai tujuan yang tinggi ini, jadi saya memindahkannya ke mac (sumber di sini ). File-file di bawah ini tidak memiliki header, tidak memiliki pranala ke Kakao, juga proyek tidak memiliki nib:
AppDelegate.m
Lihat.m
prefix.pch
sumber
Kutipan yang dikutip itu benar, tetapi jawaban untuk pertanyaan Anda adalah tidak.
Untuk menggambarkan apa jawaban Mecki pada pertanyaan lain yang dibicarakan:
Tidak ada yang lain selain kode C murni dalam metode ini, tetapi metode itu sendiri adalah kode Objective-C, seperti kelas yang berisi metode ini.
Jadi adalah mungkin untuk melakukan apa yang dikatakan Mecki, tetapi Anda tidak bisa (secara praktis — seperti yang diperlihatkan Richard J. Ross III, secara teknis dimungkinkan tetapi cukup banyak mengetik) menulis seluruh program Cocoa Touch dalam C. murni
sumber
Sebenarnya, beberapa kode yang diposting di sini, saat ditulis dalam C, masih memanggil kode objektif-C :). Saya tidak tahu apakah itu benar-benar cocok dengan skenario dari poster asli ketika dia bertanya
tapi saya akan setuju dengan orang-orang yang mengatakan bahwa, secara umum dan untuk aplikasi dengan GUI, Anda perlu menulis GUI Anda di OpenGL (yang merupakan C).
Saya pikir itulah yang dilakukan sebagian besar game, bukan? Meskipun saya tidak yakin apakah ada akses ke I / O iPhone (layar sentuh misalnya) di C.
Last but not least, orang-orang yang menulis kode di atas batu! :)
sumber
objc_msgSend()
adalah murni C. Fakta bahwa saya memanggilinitWithFrame:
tidak masalah, karena implementasi metode adalah fungsi C juga.