zoukankan      html  css  js  c++  java
  • Objective

    在前面, 我们知道了什么是类与对象的关系, 但使用对象的时候注意陷阱, 因为还有一种对象叫做匿名对象, 下面我们来看看~~


    例子:

    #import <Foundation/Foundation.h>
    
    @interface Eyeglass : NSObject
    {
        @public
        int lens;
    }
    - (void)eyeglassLens;
    @end
    
    @implementation Eyeglass
    - (void)eyeglassLens
    {
        NSLog(@"一副有%d个镜片的眼镜.", lens);
    }
    @end
    
    int main()
    {
        Eyeglass *eye = [Eyeglass new];
        eye->lens = 2;
        
        [eye eyeglassLens];
        
        return 0;
    }


    输出结果:

    2015-01-15 16:19:52.303 a.out[10496:1108572] 一副有2个镜片的眼镜.
    



    常规来讲, 上面这个例子是我们平常所写的, 但如果改一改之后:

    int main()
    {
        [Eyeglass new]->lens= 2;
        [[Eyeglass new] eyeglassLens];
        
        return 0;
    }

    这样子编译器也是不会报错的, 但结果就不是我们想要的:

    2015-01-15 16:25:26.317 a.out[10511:1110360] 一副有0个镜片的眼镜.
    




    那么为什么会这样子呢? 下面我们来看看示意图:



    我们都知道[Eyeglass new]是创建一个新的对象, 想想上面的那个例子, 创建之后赋值为2, 在调用的时候又创建, 但并没有赋值, 所以它默认的值是0, 所以输出的结果是0.



    在实际开发的时候, 我们千万一定不能这么写, 如果是这样子写的话, 第一时间就会被炒掉, 这是不规范的.






    好了, 这次我们就讲到这里, 下次我们继续~~~~

  • 相关阅读:
    Python深拷贝和浅拷贝解析
    python中count函数的用法
    Jenkins + gitlab + maven 自动打包部署项目
    nio和bio得区别
    nginx负载均衡的5种策略
    接口测试常见bug
    接口自动化面试4
    pass 语句
    if 语句
    while循环
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4282857.html
Copyright © 2011-2022 走看看