07-07、new方法的實現原理:alloc 方法類方法和init對象方法

import <Foundation/Foundation.h>

#import "Person.h"

int main(int argc, const char * argv[]) {

/*
 new做了三件事情
 1.開辟存儲空間  + alloc 方法
 2.初始化所有的屬性(成員變量) - init 方法
 3.返回對象的地址
 */
//    Person *p = [Person new];
// alloc做了什么事情: 1.開辟存儲空間 2.將所有的屬性設置為0 3.返回當前實例對象的地址
Person *p1 = [Person alloc];
// 1.初始化成員變量, 但是默認情況下init的實現是什么都沒有做只是簡單的返回了self地址也就是返回初始化后的實例對象地址
Person *p2 =  [p1 init];
// [[Person alloc] init];

// 注意: alloc返回的地址, 和init返回的地址是同一個地址
NSLog(@"p1 = %p, p2 = %p", p1, p2);

// [[Person alloc] init]; == [Person new];
// 建議大家以后創建一個對象都使用 alloc init, 這樣可以統一編碼格式
Person *p3 = [[Person alloc] init];

return 0;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容