关于C#:将@interface放入.m文件的逻辑是什么?

What's the logic of putting @interface in .m file?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Difference between @interface definition in .h and .m file
What is the @interface declaration in .m files used for in iOS 5 projects?

我见过这样的代码:

1
2
3
4
5
6
7
// In Header.h
@interface Header{}
@end

// In Header.m
@interface Header()
@end

我的问题是:

  • 把它放在两个文件里有什么区别?
  • 为什么将放在".h"文件中的类名之后,为什么将"()"放在".m"文件中?

  • 1
    2
    3
    4
    5
    6
    @interface MyClass(){
        NSInteger aInt;

    }
    @property(nonatomic,strong) NSString *name;
    @end

    是类扩展

    对于现代编译器来说,这是一种很好的方法,它可以去除方法、ivar和属性,只用于类myclass中的私有用途。

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

    所以您可以从头文件中隐藏实现细节,它们是私有的。


    这已成为为给定类声明"私有"属性/方法的常见做法。通过在.m内部的匿名类扩展中声明它们,这些属性/方法不会向消费对象公开。