• 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.



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






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

  • 相关阅读:
    SDN第二次上机作业
    全面而清晰的网络流
    source命令详解
    C++ 优先队列存放自定义类型的指针时自定义优先级失效的解决方法
    find命令查找文件和文件夹
    OOAD
    NULL与nullptr
    Segment fault 常见原因
    虚函数的用法
    使用gdb调试段错误
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4282857.html
Copyright © 2020-2023  润新知