Lio*_*Lio 12 methods private objective-c super categories
我正在阅读如何在Objective-C中实现私有方法(在Objective-C中为类定义私有方法的最佳方法)以及我脑海中浮现的一个问题:
您如何设法实现受保护的方法,即子类可见的私有方法?
假设我有一个MySuperClass,其中包含一个包含其所有私有方法的Category,我想实现一个MySubclass覆盖或调用super到其中一个MySuperClass私有方法.这是可能的(使用Categories方法实现私有方法)?
看一下这些代码,底部有覆盖方法.
// ===========================
// = 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
Run Code Online (Sandbox Code Playgroud)
希望有人已经想到这一点.
干杯!
nal*_*all 13
这个GNUStep页面描述了一种方法第4.5节:
...明亮的一面是它允许你模拟受保护的方法.为此,必须以某种方式通知子类的编写器有关受保护的方法,并且他们需要忍受编译器警告.或者,您可以在单独的接口文件(例如,"PointProtected.h")中声明受保护的类别,并提供此接口文件,并了解它只应由子类的接口文件导入和使用.
NSR*_*der 13
在Apple,当他们构建框架时,典型的模式是拥有一个公共头(MyClass.h)和一个私有头(MyClass_private.h),并且只将公共头复制到构建产品中.当然,.m文件会#import它们.
| 归档时间: |
|
| 查看次数: |
5618 次 |
| 最近记录: |