美文网首页
第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