Dapatkah saya menggunakan kategori kelas untuk menimpa metode yang sudah diimplementasikan menggunakan kategori? Seperti ini:
1) Metode asli
-(BOOL) method {
return true;
}
2) Metode yang diganti
-(BOOL) method {
NSLog(@"error?");
return true;
}
Apakah ini akan berhasil, atau apakah ini ilegal?
sumber
Anda dapat melakukannya dengan mengadaptasi pendekatan Class Cluster , atau menggunakan metode swizzling .
Jika tidak, perilaku dua atau lebih metode yang dikategorikan tidak dapat ditentukan
sumber
Tautan dokumentasi lama sudah mati; pengganti terbaik yang bisa saya temukan ada di sini: Apple Docs :
Ini Apple menggunakan sentuhan yang lebih ringan, tetapi poin utamanya sama: Anda mengundang bencana, karena perilaku yang tidak terduga adalah diam.
sumber
Penting untuk dicatat bahwa kategori juga dapat digunakan untuk mengganti metode yang ada di kelas dasar (misalnya, metode penggerak kelas Car), tetapi Anda tidak boleh melakukan ini. Masalahnya adalah bahwa kategori adalah struktur organisasi yang datar. Jika Anda mengganti metode yang ada di Car + Maintenance.m, dan kemudian memutuskan ingin mengubah perilakunya lagi dengan kategori lain, tidak ada cara untuk Objective-C mengetahui implementasi mana yang akan digunakan. Subclassing hampir selalu merupakan pilihan yang lebih baik dalam situasi seperti ini.
Dari tutorial ini, http://rypress.com/tutorials/objective-c/categories
sumber