1.@interface可以实现三种功能:
(1)声明类:Class
(2)声明类别:Category
(3)声明扩展:Extension
2.声明类:这个就比较常用了,在这里不多说。代码:
@interface SomeClass : NSObject <SomeDelegate>{
}
@end
3.声明类别:
(1)类别能在不更改原来的类代码的情况下,为类增加方法或者重写类的方法。
(2)类别只能添加或者重写方法,但是不能添加变量。
(3)有网友说将类别名设定为“Private”,就能使类别中增加的方法成为私有方法,这个是不成立的(经过实际代码验证)。
(4)如果是重写类的已经存在的方法,则此重写的方法会在整个运行环境中生效,而且不需要在用到的地方导入实现类;
如果是为类增加新的方法,则需要在用的地方导入。
(5)代码:
@interface ClassName(类别名){
}
@end
4.声明扩展:
(1)扩展和类别语法上的的区别很简单,就是类别名省略,只保留括号。
(2)扩展只是增加原来类的方法和变量的声明,而不包含实现,所以,扩展没有独立的实现(@implementation),而是和原来的类共享一个实现。
(3)扩展不仅能在原来类的基础上增加方法,也能增加变量。
(4)如果将扩展写到实现文件中,则增加的变量和方法就是私有变量和私有方法。
(5)代码:
@interface ClassName(){
}
@end