将@interface放在.m文件中的逻辑是什么?

its*_*ode 8 objective-c

可能重复:
.h和.m文件中@interface定义的区别在iOS 5项目中使用的.m文件
中的@interface声明是什么?

我见过这样的代码:

// In Header.h
@interface Header{}
@end

// In Header.m
@interface Header()
@end
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 将它放入2个文件有什么区别?
  2. 为什么在".h"文件中放置{}后面的类名,为什么在".m"文件中放入"()"?

Vik*_*ica 12

@interface MyClass(){
    NSInteger aInt;

}
@property(nonatomic,strong) NSString *name;
@end
Run Code Online (Sandbox Code Playgroud)

是一个类扩展

使用现代编译器,这是一种很好的方法,只能在MyClass类中私有化地使用方法,ivars和属性.

类扩展必须在主实现文件中声明(不在类别中).

因此,您可以隐藏头文件中的实现细节,它们是私有的.