类别相关 匿名类别

来源:互联网 发布:指针数组如何定义 编辑:程序博客网 时间:2024/04/30 02:10

//为某个类(官方类库中得类,第三方提供的类,某些自己没有源代码的类)添加方法的这种方式,我们叫做类别(category

//类别最主要的作用:为某个类添加方法。


//@interface 要添加方法的类的类名 ( 类别名 )

//@end


//使用类别的注意事项

//1. 在类别中不能添加成员变量(字段)

//2. 用类别来为类添加方法,这些类可以是任意类。(添加方法时,我们不应该去添加与官方类库中重名的方法)

//3. 有些官方类库中类的方法,哪怕你类别中用重名的方法实现,调用的还是原类的方法。

例如:

//需要使用类别,就必须添加类别的头文件

#import "NSString+StringPrint.h"



//类别作用2:通过类别,当类的方法比较多,比较乱,可以将类的实现分散在不同的文件中。


//私有方法:在接口中未声明的方法。(注意,如果这个方法在父类中有声明)

//通过类别为私有方法添加前向声明

//在类别中我们只需要添加私有方法的声明,不需要实现。


//当类中的方法实现有问题,我们可以通过类别重新实现一个相同的方法来修正原方法的BUG

//因为类别中的方法比原类的方法有更高的优先级,所以在类别中方法和原类中得方法重名时,会调用类别中共的方法。

//当多个类别中出现同名的方法,很可能引起编译错误,我们不应该在多个类别中添加同名的方法

---------------------------------------------------匿名类别

#import "Dog.h"

//#import "Dog_DogExtension.h"


//匿名类别经常用在类的实现文件上面,它声明了一个私有字段,这个字段我们不希望被用户使用,同样不希望被用户知道。

@interface Dog ()

{

    //匿名类别中可以添加字段

    //匿名类别声明在类的.m文件中,不管是字段还是方法,都不能在类外使用。这些方法和字段都是私有的

@public

   int _weight;

}


//匿名类别中可以添加属性

@property int height;


@end


@implementation Dog

{

   int _length;

}


- (void)test1

{

    NSLog(@"i am test1");

}


- (void)test

{

   _length = 10;

   _weight = 20;

    [selfsetHeight:10];

}


@end




0 0