pragma mark 匿名对象
pragma mark 概念
/**
匿名 就是没有名字
切换一个类的 .h .m文件 快捷键:control + command + 上、下
*/
pragma mark 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person.h"
#import "IPhone.h"
#pragma mark main函数
int main(int argc, const char * argv[])
{
// 匿名就是没有名字, 匿名对象 就是没有名字的对象
#warning 普通对象
// 1.有名字的对象
// 只要用一个指针 保存了某个对象的地址,我们就可以称这个指针为某个对象
Person *p = [Person new]; // offc1
p->_age = 24;
p->_name = @"lyh";
[p say];
#warning 什么是匿名对象
// 2.没有名字的对象
// 无论有没有名字, 只要调用了 new 方法都会返回对象的地址
// 每次new 都会新开辟一块存储空间
[Person new]->_age = 24;
[Person new]->_name = @"Lyh";
[[Person new] say];
#warning 匿名对象的使用场景
// 3.匿名对象的应用场景
// 3.1 当对象只需要使用一次的时候 就可以 使用匿名对象
// 创建对象 使用方法
/*
IPhone *phone = [IPhone new]; // 返回地址 offc1 则 phone = offc1
[phone brand]; // [offc1 brand]
*/
// 使用匿名对象
[[IPhone new] brand]; // [offc1 brand];
// 3.2 匿名对象 可以作为方法的参数(实参)
Person *p1 = [Person new];
// 通过创建对象来作为方法的实参 (如果只是调用1次 可以使用匿名对象)
/*
IPhone *phone1 = [IPhone new];
[p1 signal:phone1];
*/
[p1 signal:[IPhone new]];
return 0;
}
Person.h // 人类
#import <Foundation/Foundation.h>
#import "IPhone.h"
/**
* 切换.h .m文件 快捷键:control + command + 上、下
*/
@interface Person : NSObject
{
@public
int _age;
NSString *_name;
}
-(void)say;
// 打电话
- (void)signal:(IPhone *)phone;
@end
#import "Person.h"
@implementation Person
-(void)say
{
NSLog(@"age = %i name = %@",_age,_name);
}
- (void)signal:(IPhone *)phone
{
[phone callWithNumber:22334455];
}
@end
IPhone.h // 手机类
#import <Foundation/Foundation.h>
@interface IPhone : NSObject
- (void)brand;
// 电话拨打的号码
- (void)callWithNumber:(int)number;
@end
#import "IPhone.h"
@implementation IPhone
- (void)brand
{
NSLog(@"苹果手机");
}
- (void)callWithNumber:(int)number
{
NSLog(@"打电话给%i",number);
}
@end