• OC 对象和匿名对象


    OC 对象和匿名对象

     

    对象和匿名对象的定义:

    当new出一个对象时,如果用一个指针接收这个对象,那么这个指针通常被称为对象。
    如果new出的对象,不用指针接收,那么这个对象就称为匿名对象。

    #import <Foundation/Foundation.h>
    #import "Iphone.h"
    #import "Person.h"
    
    int main(int argc, const char * argv[]) {
    
        //1.通过指针访问对象
        Iphone *ip =  [Iphone new];     // 创建一个对象,并用指针ip接收
        ip->_size = 4.3;  //这种是指针访问结构体成员变量的专用写法。OC的对象都是指针,存储着堆中的一块内存地址。              
        ip.weight = 10;        // 通过点语法来访问对象的成员变量
        [ip powerOff];      // 通过指针来访问对象的方法
        
        //2. 匿名对象,无指针
        [Iphone new]; // 这里创建了一个对象,但是这个对象并没有用指针来接收,这个对象就是匿名对象
        
         注意:每次创建一个匿名对象,都会给这个对象分配不同的存储空间,也就是说每个匿名对象都不相同。
         //3.没有两个相同的匿名对象
        [Iphone new]->_cpu = 5;   // 给第1个匿名对象_cpu赋值
        [Iphone new]->_size = 4.0; //给第2个匿名对象_size赋值
        [Iphone new]->_weight = 15; //给第3个匿名对象_weight赋值
        [[Iphone new] powerOff];  //调用第4个匿名对象powerOff方法
        NSLog(@"%@",[Iphone new]); //打印第5个匿名对象
    
         //猜猜看,这里打印的结果全为0。
         //原因是每次赋值时,都创建了新的匿名对象,NSLog打印的是一个新的匿名对象,它的成员变量并没有赋值。所以都为0。
        
    
       //4. 匿名对象可以作为实参进行传递
        Person *p = [Person new];
        Iphone *ip = [Iphone new];
        [p sendSignal:ip];    //这里是通过指针,作为实参传递
      
        [p sendSignal:[Iphone new]];//这里是使用匿名对象,作为实参传递,但是[Iphone new]对象在这次使用之后就会被销毁,除非有新的指针引用它。
        
        return 0;
    }
    iOS开发者交流群:180080550
  • 相关阅读:
    美国和日本不是盟友吗,为什么拒绝出售F-22战斗机给日本?
    刚刚大学毕业,是选择创业还是选择公司上班?
    现今的社会一定要结婚吗?
    事必躬亲果真是无能的表现?
    课外辅导机构,就让疫情灭了吧!
    这些年,我读书越来越少了!
    Python操作日志、加密、发送邮件、线程、生产者消费者
    Python模块操作之re、MySQL、Excel
    Python面向对象、迭代器、range和切片的区分
    Python模块、文件读写、异常
  • 原文地址:https://www.cnblogs.com/stevenwuzheng/p/5484580.html
Copyright © 2020-2023  润新知