oc14--匿名对象

//
//  main.m
//  匿名对象

#import <Foundation/Foundation.h>
#import "Person.h"
#import "Iphone.h"

int main(int argc, const char * argv[]) {
    // 匿名就是没有名字, 匿名对象就是没有名字的对象
    
    // 1.有名字的对象
    // 只要用一个指针保存了某个对象的地址, 我们就可以称这个指针为某个对象
    // 称p为Person对象
    Person *p =[Person new]; // 0ffc12
    p->_age = 30;
    p->_name= @"lnj";
    [p say];
    /*
     0ffc12->_age = 30;
     0ffc12->_name= @"lnj";
     [0ffc12 say];

     */
    
    // 2.没有名字的对象
    // 无论有没有名字, 只要调用new方法都会返回对象的地址
    // 每次new都会新开辟一块存储空间
    [Person new]->_age = 30;
    [Person new]->_name = @"LMJ";
    [[Person new] say];//name=(null),age=0
    
    // 3.匿名对象的应用场景
    // 3.1当对象只需要使用一次的时候就可以使用匿名对象
    Iphone *phone = [Iphone new]; // 0ffb11   phone = 0ffb11
    [phone brand]; // [0ffb11 brand];
    [[Iphone new] brand]; // [0fff5 brand];
    
    // 3.2匿名对象可以作为方法的参数(实参)
    Person *p1 = [Person new];
//    Iphone *phone1 = [Iphone new];
//    [p1 signal:phone1];
    [p1 signal:[Iphone new]];
    
    
    return 0;
}
//
//  Person.h
//  day12

#import <Foundation/Foundation.h>
#import "Iphone.h"
@interface Person : NSObject
{
    @public
    int _age; // 年龄
    NSString *_name; // 姓名
}
- (void)say;
- (void)signal:(Iphone *)phone;
@end
//
//  Person.m
//  day12
#import "Person.h"
// .h和.m之间切换 command  + control + ⬆️
@implementation Person
-(void)say
{
    NSLog(@"name = %@, age = %i", _name, _age);
}
- (void)signal:(Iphone *)phone
{
    [phone callWithNumber:12345678];
}
@end
//
//  Iphone.h
//  day12

#import <Foundation/Foundation.h>
@interface Iphone : NSObject
- (void)brand;
- (void)callWithNumber:(int)number;
@end
//
//  Iphone.m
//  day12
#import "Iphone.h"
@implementation Iphone
- (void)brand
{
    NSLog(@"苹果手机");
}
- (void)callWithNumber:(int)number
{
    NSLog(@"打电话给%i", number);
}
@end
原文地址:https://www.cnblogs.com/yaowen/p/7412051.html