Re: alloc和init 的指令
不如把全部拆開來吧
其實 +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 等價的方法而已。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.38.1
※ 文章網址: http://www.ptt.cc/bbs/MacDev/M.1405388790.A.5CB.html
推
07/15 17:31, , 1F
07/15 17:31, 1F
→
07/16 03:20, , 2F
07/16 03:20, 2F
→
07/16 03:20, , 3F
07/16 03:20, 3F
→
07/16 03:21, , 4F
07/16 03:21, 4F
→
07/16 03:22, , 5F
07/16 03:22, 5F
→
07/16 03:22, , 6F
07/16 03:22, 6F
推
07/16 03:28, , 7F
07/16 03:28, 7F
討論串 (同標題文章)
完整討論串 (本文為第 4 之 4 篇):
5
28
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章