美文网首页
Objective-C隐藏方法

Objective-C隐藏方法

作者: 开发者zhang | 来源:发表于2017-09-21 20:50 被阅读0次

Objective-C的方法只要是声明在@interface里,就可以认为是公有的。实际上,Objective-C没有像 Java、C++ 中的那种绝对的私有及保护成员方法,仅仅可以对调用者隐藏某些方法

声明和实现都写在 @implementation 里的方法,类的外部是看不到的。

可以使用Category*来实现私有方法,使用这种方法时,外部就不能直接调用到 privateSayHello 方法。


// AClass.h
@interface AClass : NSObject

-(void)sayHello;

@end

// AClass.m
/*Category*/
@interface AClass (private)

-(void)privateSayHello;

@end

@implementation AClass

-(void)sayHello {
    [self privateSayHello];
}

-(void)privateSayHello {
    NSLog(@"Private Hello");
}

当我们想通过 Category 来进行方法隐藏的时候,我们可以把实现放在主 implementation 里。如上面所示

当我们想扩展别的不能获取到源代码的类,或者想把不同 Category 的实现分开,可以新建 <ClassName>+CategoryName.m 文件,在里面进行实现:

#import "SystemClass+CategoryName.h"

@implementation SystemClass ( CategoryName )
// method definitions
@end
  • 也可以使用 Extension 来实现私有方法:
// AClass.h 与上面相同

// AClass.m 
@interface AClass()

-(void)privateSayHello;

@end

@implementation AClass

-(void)sayHello {
    [self privateSayHello];
}

-(void)privateSayHello {
    NSLog(@"Private Hello");
}

@end

参考资料

http://blog.sina.com.cn/s/blog_74e9d98d01013au8.html

相关文章

网友评论

      本文标题:Objective-C隐藏方法

      本文链接:https://www.haomeiwen.com/subject/bzbtextx.html