Di Objective-C, saya ingin tahu apa +
dan -
tanda di samping definisi metode.
- (void)loadPluginsAtPath:(NSString*)pluginPath errors:(NSArray **)errors;
objective-c
syntax
method-declaration
gyurisc
sumber
sumber
@classmethod
dan@method
atau lebih, juga. Kenapa begitu singkat ...?(+) Metode kelas: -
Apakah metode yang dinyatakan sebagai statis. Metode ini dapat dipanggil tanpa membuat instance kelas. Metode kelas hanya dapat beroperasi pada anggota kelas dan bukan pada anggota contoh karena metode kelas tidak mengetahui anggota contoh. Metode instance kelas juga tidak bisa dipanggil dari dalam metode kelas kecuali mereka dipanggil pada instance kelas itu.
(-) Metode instance: -
Di sisi lain memerlukan instance kelas untuk ada sebelum mereka dapat dipanggil, jadi instance kelas perlu dibuat dengan menggunakan kata kunci baru. Metode instance beroperasi pada instance kelas tertentu. Metode instance tidak dinyatakan sebagai statis.
sumber
+ metode adalah metode kelas - yaitu, metode yang tidak memiliki akses ke properti instance. Digunakan untuk metode seperti mengalokasikan atau metode pembantu untuk kelas yang tidak memerlukan akses ke variabel instan
- Metode adalah metode instance - berhubungan dengan satu instance objek. Biasanya digunakan untuk sebagian besar metode di kelas.
Lihat Spesifikasi Bahasa untuk lebih detail.
sumber
self
, melainkan kelas. Mereka tidak terkait dengan sebuah instance, dan metode pencarian tidak melalui instance, tetapi melalui kelas. Namun, Anda bisa melakukannya+exchangeIVarOf: (MYObject*)a with: (MYObject*)b { MYObject* x = a->ivar; a->ivar = b->ivar; b->ivar = x; }
Penjelasan definitif ini dari Apple ada di sini, di bawah bagian 'Metode dan Perpesanan':
https://developer.apple.com/library/mac/referencelibrary/GettingStarted/RoadMapOSX/books/WriteObjective-CCode/WriteObjective-CCode/WriteObjective-CCode.html
Secara singkat:
+ berarti 'metode kelas'
(metode dapat dipanggil tanpa turunan dari kelas yang sedang dipakai). Jadi Anda menyebutnya seperti ini:
- berarti 'metode instan'
Anda harus membuat instance objek terlebih dahulu, lalu Anda dapat memanggil metode pada objek). Anda dapat secara manual instantiate objek seperti ini:
(ini pada dasarnya mengalokasikan ruang memori untuk objek kemudian menginisialisasi objek di ruang itu - penyederhanaan yang berlebihan tetapi cara yang baik untuk memikirkannya. Anda dapat mengalokasikan dan init objek secara terpisah tetapi tidak pernah melakukan ini - ini dapat menyebabkan masalah buruk terkait dengan pointer dan manajemen memori)
Kemudian panggil metode instance:
Cara alternatif untuk mendapatkan instance objek di Objective C adalah seperti ini:
yang memanggil metode kelas 'numberWithInt' dari kelas NSNumber, yang merupakan metode 'pabrik' (yaitu metode yang memberi Anda 'contoh dibuat siap' dari suatu objek).
Objective C juga memungkinkan pembuatan instance objek tertentu secara langsung menggunakan sintaks khusus, seperti dalam kasus string seperti ini:
NSString * myStringInstance = @ "abc";
sumber