Geçersiz kılma yöntemleri kategoriler kullanarak Objective-C
Sınıfı bir kategori zaten bir kategori kullanarak uygulanan bir yöntem geçersiz kılmak için kullanabilir miyim? Bu gibi:
1) Özgün yöntemi
-(BOOL) method {
return true;
}
2) Overrided yöntemi
-(BOOL) method {
NSLog(@"error?");
return true;
}
Bu iş olacak, ya da bu yasal bir şey mi?
CEVAP
Objective-C dili şu anda sınıfını miras yöntemleri geçersiz kılmak için bir kategori sağlar, ancakhatta yöntemleri kuvvetle bunu yapmak önerilmez sınıf arabirimi olarak ilan etti. Bir kategori bir alt sınıf için bir alternatifi değildir. Yöntemleri geçersiz kılmak için bir kategori kullanarak çeşitli önemli eksiklikler var:
Bir kategori bir miras geçersiz kılar yöntemini kategorisinde her zamanki gibi, miras çağırabilirsiniz
super
mesaj yoluyla uygulanması. Ancakkategori geçersiz kılar eğer kategorisinde var olan yöntem. sınıf, çağırmak için bir yolu yoktur orijinal uygulama.Kategori güvenilir yöntemler aynı sınıfın başka bir kategoride ilan geçersiz kılamaz.
Bu sorun, Kakao sınıfların birçok kategoriler kullanılarak uygulanır çünkü bu özel bir önem taşıyor. Bir kategori içinde uygulanan olabilir kendisi geçersiz kılmak için deneyin, ve böylece uygulama önceliklidir olan çerçeve tanımlı bir yöntem tanımlanmıştır.
Bazı kategori yöntemlerin varlığı tüm çerçeveler arasında davranış değişiklikleri neden olabilir. Örneğin, geçersiz kılma
windowWillClose:
temsilci yöntemi bir kategori üzerinde NSObject, tüm pencere temsilciler programı daha sonra yanıt kullanarak kategorisini yöntem; davranış tüm örneklerini değiştirmek oldukça kullanışlı olabilir. Sen Ekle kategoriler çerçevesinde bir sınıf üzerinde davranış değişikliklerine neden gizemli ve çöker yol açabilir.
Neden't statik Java yöntemleri ge...
Neden önemli GetHashCode yöntem geçers...
Nasıl mockito ile yöntemleri geçersiz ...
Geçersiz kılma ısequal en iyi uygulama...
HTML bir dize kullanarak yerleşik DOM ...