PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
MacDev
Re: alloc和init 的指令
楼主:
seruziu
(艾利普拉)
2014-07-15 09:46:27
不如把全部拆开来吧
其实 +alloc 这个 Method 的动作是
// 取得 class
Class myclass = objc_getClass("MyClass");
// 取得 class 大小
size_t classSize = class_getInstanceSize(myclass);
// 设立物件指标,分配内存空间
MyClass *obj = calloc(1, classSize);
// 指定 isa (这个方式已经在新的 llvm 禁止使用了)
obj->isa = myclass
其实 -init 的用途是确保所有 members 被初始化,但是他跟其他物件导向语言不同
的是,-init 并不会被保证执行,也不一定要被执行(不跑可能会出状况就是了)。
所以充其量只是一个跟其他 instance method 等价的方法而已。
作者:
MoonAndEye
(月如无恨月常圆)
2014-07-15 17:31:00
我想知道这个,请问这个是去哪里查的?
作者:
Killercat
(杀人猫™)
2014-07-16 03:20:00
其实不全对,不过基本上很类似
http://tinyurl.com/pff7fl8
这是目前NSObject.mm实作他真正所有alloc的动作在_objc_rootAlloc里面现在都用class_createInstance全包了 不再由外面分开好几动来慢慢做不过calloc或多或少其实已经包含了一点init的意思了...
继续阅读
Re: alloc和init 的指令
uranusjr
使用scanf做一个输入功能
chlorine
Re: [问题] 图片下载传输效率问题
lp19fox
Re: alloc和init 的指令
uranusjr
alloc和init 的指令
chlorine
[问题] 动态文字排版
fightword
[问题] 如何不用上拉更新
Saxson5566
Re: [问题] 买macbook开发?
uranusjr
[问题] ad hoc app 可以走内网发布吗?
dream1124
[问题] 买macbook开发?
paschen
Links
booklink
Contact Us: admin [ a t ] ucptt.com