美文网首页
第1条:了解Objective-C语言的起源

第1条:了解Objective-C语言的起源

作者: CodingIran | 来源:发表于2017-03-15 10:17 被阅读11次
    1. something变量指向分配在堆里的某块内存,其中含有一个NSString对象。后面创建的anotherthing指向同一块内存地址,并不拷贝对象本身,只是两个变量同时指向此对象。
      当前“栈帧”里分配了两块内存,每块内存的大小都能容下一枚指针(32位架构计算机是4字节,64位计算机是8字节),每块内存的值都是一样,就是NSString实例的内存地址。
    NSString *someString = @"The Thing";
    NSString *anotherString = something;
    
    1. 分配在堆中的内存必须直接管理(MRC下手动管理,ARC下编译器自动生成管理内存的代码),而分配到栈上用于保存变量的内存则会在其栈帧弹出时自动清理。
    1.png
    1. 在Objective-C中,有时会有不含*的变量:
    CGRect frame = CGRectMake(0, 0, 100, 100);
    

    CGRect本质上是C结构体:

    struct CGRect {
        CGPoint origin;
        CGSize size;
    };
    typedef struct CGRect CGRect;
    

    整套Foundation框架大量使用了这类结构体,主要是为了节约开销(分配以及释放堆内存堆开销)。

    相关文章

      网友评论

          本文标题:第1条:了解Objective-C语言的起源

          本文链接:https://www.haomeiwen.com/subject/wuzknttx.html