• 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
  • 相关阅读:
    Oracle EBS—PL/SQL环境初始化之 fnd_global.apps_initialize
    fnd_profile.value的用法
    FND_MESSAGE 消息提示详解
    FORM触发器执行顺序
    大数据实战精英+架构师班 ④ 期
    .Net Core3.0 WebApi 十五:使用Serilog替换掉Log4j
    .Net Core3.0 WebApi 十四:基于AOP的切面redis缓存
    .Net Core3.0 WebApi 十三:自定义返回Json大小写格式
    .Net Core3.0 WebApi 十二:自定义全局消息返回过滤中间件
    .Net Core3.0 WebApi 十一:基于Log4j的全局异常处理
  • 原文地址:https://www.cnblogs.com/yaowen/p/7412051.html
Copyright © 2020-2023  润新知