我的理解是,除了分配內存之外,alloc
還將所有實例變量(isa
變量除外)設置爲零或等於零的等效類型,例如nil
,NULL
,並0.0.
alloc/init和實例變量的設置
但最近,我讀了以下有關init:
初始化設置實例對象的 變量合理 和有用的初始值。
我有點困惑,什麼是「合理的和有用的初始值」是指....
如果alloc
已經設置的值爲零,則init
以任何方式改變這些值?
我的理解是,除了分配內存之外,alloc
還將所有實例變量(isa
變量除外)設置爲零或等於零的等效類型,例如nil
,NULL
,並0.0.
alloc/init和實例變量的設置
但最近,我讀了以下有關init:
初始化設置實例對象的 變量合理 和有用的初始值。
我有點困惑,什麼是「合理的和有用的初始值」是指....
如果alloc
已經設置的值爲零,則init
以任何方式改變這些值?
如果頁頭已設置的值爲零,是初始化以任何方式改變這些值?
當然。例如,您可能有一個對象代表一個帶有ivars的矩形來表示寬度和高度;在init
中,你可以將這些ivars初始化爲一些理智的默認值,比如300x200。
這就是他們正在談論的。
如果你問的是NSObject的-init
方法是否將子類的ivars的值初始化爲某些非零值,那麼答案當然是否定的。
是的,這是完全可能的。例如,一個數據結構可能有成員變量,這些成員變量也需要分配和初始化動態內存。調用alloc
將爲成員變量保留空間,調用init
將使這些值有用(例如,子分配&初始化)。
alloc
和init
是分開的,因爲對於以不同方式初始化對象的類,可以有多個init
例程。
您也可以通過撥打new
同時致電alloc
和init
。因此,下面兩行是等價的:
[[NSObject alloc] init];
[NSObject new];
所以我讀的引用是指*方便*初始值設定項而不是NSObject的-init。 這正是我想知道的......謝謝! – ChrisR 2009-12-02 22:57:27