在代码中只关注协议和抽象类,而没有具体的类名的对象成为匿名对象。
关于匿名的对象的说明:
(1)没有用指针指向匿名对象;
(2)匿名对象的内存分配在堆上,而不再栈上;
(3)匿名对象只能使用一次;
(4)同一个类的匿名对象,每一次创建都是不一样的
(5)开发中应避免使用匿名对象
下面进行代码说明:
#import "People.h"
@interface People ()
@property (nonatomic,assign)int weight;
-(void)health:(int)weight;
@end
@implementation People
-(void)health:(int)weight
{
NSLog(@"体重:%d",weight);
}
@end
类People有一个属性weight,方法health对weight进行输出,不适用匿名对象的情况下,需要先实例化一个People的对象,再调用health方法。而是用匿名对象的情况如下:
int main(int argc, const char * argv[]) {
@autoreleasepool {
[[People new]health];
}
return 0;
}
匿名对象直接进行对象的创建,并不使用指针指向对象。