objective-c中@interafce后面的"()"

最近学习oc,在翻代码的时候发现不少.m文件中有这样一句话html

@interface xxxxx ()学习

@end spa

.h中已经对接口进行定义为何在.m中还有这样一句话呢,查了下。.net

http://www.cnblogs.com/winkyao/archive/2012/04/02/2429664.html设计

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

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

这是个很是常见的设计,为何在.m文件里面,也要出现一个接口声明呢?code

这很相似于一个分类,但其实它不是一个分类(或者你也能够叫它anonymous Catogary),其实这是一个叫作class extension的东西orm

 

说说区别:htm

  1.  首先 extension 能够重声明一个数据成员,好比一个数据成员是只读的,你能够把它变成可读写blog

  2.  分类根本不一样意你扩展数据成员,它只扩展一些方法, 可是在Clang/LLVM 2.0 compiler 之后, extension能够这么作.接口

  3.  有时候,你若是但愿实现一些不公开的方法供本身使用,那你能够把它放入.m的extension里面.那么这些接口都是不公开的了

相关文章
相关标签/搜索