【发布时间】:2010-12-07 15:26:11
【问题描述】:
我正在阅读如何在 Objective-C (Best way to define private methods for a class in Objective-C) 中实现私有方法,然后我想到了一个问题:
您如何设法实现受保护的方法,即子类可见的私有方法?
假设我有一个 MySuperClass,其 Category 包含它的所有私有方法,并且我想实现一个 MySubclass 覆盖或调用超级 MySuperClass 私有方法之一。这可能吗(使用类别方法来实现私有方法)?
看一下这段代码,底部有被覆盖的方法。
// ===========================
// = File: MySuperClass.h
// = Interface for MySuperClass
// ===========================
@interface MySuperClass : Object
...
@end
// ===========================
// = File: MySuperClass.m
// ===========================
#import "MySuperClass.h"
// =================================
// = Interface for Private methods
// =================================
@interface MySuperClass (Private)
-(void) privateInstanceMethod;
@end
// =====================================
// = Implementation of Private methods
// =====================================
@implementation MySuperClass (Private)
-(void) privateInstanceMethod
{
//Do something
}
@end
// ================================
// = Implementation for MySuperClass
// ================================
@implementation MySuperClass
...
@end
// ===========================
// = File: MySubClass.h
// = Interface for MySubClass
// ===========================
@interface MySubClass : MySuperClass
...
@end
// ================================
// = Implementation for MySubClass
// ================================
#import MySubClass.h
@implementation MySubClass
//OVERRIDING a Super Private method.
-(void) privateInstanceMethod
{
[super privateInstanceMethod]; //Compiler error, privateInstanceMethod not visible!
//Do something else
}
@end
希望有人已经弄清楚了。
干杯!
【问题讨论】:
-
“幸好有人已经知道了。”...那你在问什么?
-
我认为是语言混乱。固定。
-
感谢您让我的问题更容易让大家理解。当我实际上的意思是“希望”时,我用“幸运”这个词犯了一个错误。非常抱歉,非常感谢!
标签: objective-c methods private categories super