2010-05-20 13 views
14

, siz, uygulanması dahilinde, açıkça geçersiz kılınmasını olsanız bile, üst sınıfının en yöntemini çağırabilirsiniz bu yöntem, yani:Objective-C nesnesinin süper sınıfı için başka bir yerden nasıl bir yöntem ararsınız? Eğer bir alt sınıfı uyguluyorsanız

[self overriddenMethod]; //calls the subclass's method 
[super overriddenMethod]; //calls the superclass's method 

Ne üst sınıfının yöntemini aramak istiyorsanız alt sınıfın uygulamasının dışındaki bir yerden, yani:

Bu mümkün mü? sen eğer

[[super super] overriddenMethod]; //will this work? 

cevap

20

Birden çok hoş bir seçenek sizin için yapar bir kategori yöntemini eklemektir.

13

Sen [[[object class] superclass] methodForSelector: ...] göndermek ve isterseniz doğrudan IMP işaretçi çağırabilir ... ama: Ve uzantısı tarafından, bu uygulamaya içinde birden fazla seviyede, yani yukarı çıkmak mümkündür Bunu yaptığınızda, muhtemelen uygulamanızın tasarımında çok yanlış bir şeyler var.

- (void) callSuperMethod { [super overriddenMethod]; } 

Bunu yapmanın daha kolay bir yolu yok orada aslında tasarımı ile çok bağlıdır: (hata ayıklama için)

+1

Tasarım yok. Hata ayıklama için buna ihtiyacınız var. – executor21

+0

Bu durumda, IMP uzağa. :) –

İlgili konular