我是一名Objective-c初学者,我看到如下代码:
DemoController.m:
@interface DemoController()
-(void)method1;
@end
@implementation DemoController
-(void)method1
{
NSLog(@"This is method1 in class extension");
}
//this method is not declared in DemoController.h, only in DemoController.m.
-(void)method2
{
NSLog(@"This is method2 in implementation only");
}
@end
我想知道method1和method2之间的区别。 有人可以告诉我吗?
此致 黄
答案 0 :(得分:2)
在旧的Objective-C版本中,您需要在使用之前声明一个方法,这就是代码的前三行用method1
执行的操作。如果您的.h
文件未声明method1
或method2
,则无法从.m
文件外部轻松调用。
在Objective-C中,所有方法都是公开的!无法隐藏方法。您始终可以使用“低级”方式调用任何方法,例如performSelector:withObject:
。但是,如果您声明一个方法,编译器会为您提供以前习惯的简单访问:[object method]
。
因此,您的示例中method1
和method2
之间没有区别。在类扩展中声明方法,以便您可以在同一个文件中使用它们。