2010-05-19 50 views
0

任何人都可以请教我如何避免在Objective-C的子类中重写超类方法,就像Java中的“最终”概念一样。如何避免覆盖子目录中的方法c

+0

这个问题也可能揭示这个问题: http://stackoverflow.com/questions/2864273/how-to-avoid-the-base-class-member-functions-getting-overridden-by-sub -class-in-o/2864554 – 2010-05-19 10:20:03

回答

4

你不能。您甚至不能确定叶类的方法是否是您提供的方法,因为我们可以使用Objective-C运行时库来替换正在运行的应用程序中的方法实现。这是运行时库设计的一个有意思的特征。

+0

好的,那么如何保护我的超类属性,即不能通过对象的存在来改变。以及开发人员在编写框架或包装时如何处理这些情况。 – chethan 2010-05-19 10:00:36

+0

@tttthan你没有,或者你记录的要求,并希望开发人员遵循它。你可以做一些事情,比如KVC的隐藏属性或者混淆他们的使用,但是你不能阻止人们接触它们。 – 2010-05-19 10:38:07

+0

试试这个:: http://iphonedevelopertips.com/objective-c/private-methods.html – 2012-04-30 06:13:10

-1

嗯,我不知道“最终”等同于客观C,但如果有一个父类的方法,你不想叫就是不写具体的方法在你的子类

另外我认为用“+”前缀编写的方法与“ - ”相反是一种类方法,而不是一种实例方法,因此方法应该始终相同。