我明白身邊的引用計數的整體業務時,和「擁有的對象」,而如果分配在Objective-C的對象,這是你的責任,它釋放當你需要調用的alloc創建新對象
但是,究竟是否需要在新創建的對象上調用alloc?僅僅是在示波器結束後保留參考還是有其他原因
我明白身邊的引用計數的整體業務時,和「擁有的對象」,而如果分配在Objective-C的對象,這是你的責任,它釋放當你需要調用的alloc創建新對象
但是,究竟是否需要在新創建的對象上調用alloc?僅僅是在示波器結束後保留參考還是有其他原因
您需要調用alloc才能爲對象分配內存。
對象的典型的設置是這樣的:
Object *obj = [[Object alloc] init];
的ALLOC呼叫爲對象分配存儲器,以及初始化呼叫初始化它(給它對於所有屬性/特性合理的默認值)。
某些對象類型來與工廠的方法,例如
NSArray *arr = [NSArray array];
在這種情況下,對象被初始化並且由單個陣列呼叫分配。
除了不同的所有權規則通常適用於這兩種方法之外,這與這些引用計數沒有任何關係(直接)。
我不完全是一個Objective-C的傢伙,但我不認爲你的任何對象調用alloc
,你怎麼稱呼它一個類來分配對象,並調用新分配的對象init
。
如果這是您的設置,您可能希望retain
在自動釋放池執行release
之後保留引用。這通常發生在使用[NSThing thingWithStuff:stuff]
或其他類似物創建的對象上。
我想你是誤解了一個基本概念。向類發送alloc將導致創建該類的新對象(尚未初始化),您擁有該對象(保留計數爲1)。
「你什麼時候需要在新創建的對象上調用alloc?」 - 如果對象是新創建的,則意味着某人已經分配了它。
如果您的意思是:何時需要在新創建的對象上調用retain?答案是如果你想自己保留它,而不是依賴任何分配給它的人,並且可能會在某個時候釋放它。記住alloc/new語法將保留計數提高1,其他創建方法(如[NSArray數組])一般返回自動釋放對象..
我會建議使用ARC,而不是被這些問題困擾..
唯一的一次,你會** **需要調用的Alloc自己是如果沒有工廠方法。無論哪種方式,你都可以處理保留計數和東西。 – Fogmeister