OC语言day02-13匿名对象

pragma mark 匿名对象

pragma mark 概念

/**
 匿名 就是没有名字
 切换一个类的 .h .m文件 快捷键:control + command + 上、下
 */

pragma mark 代码

#import 
#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 
#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 

@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

你可能感兴趣的:(OC语言day02-13匿名对象)