假設我有在.h中聲明的UIView viewLoading。我不直接初始化它(在第一個代碼中)。內存管理分配不直接分配
第一個代碼。
UIView *viewLoading2 = [[[UIView alloc] initWithFrame:CGRectMake(75 , 155, 170.0, 170.0)]];
viewLoading = viewLoading2;
[viewLoading2 release]
第二個代碼:
viewLoading = [[[UIView alloc] initWithFrame:CGRectMake(75 , 155, 170.0, 170.0)]];
第三碼:
- (void) viewLoad:(UIView *) viewLoading2
{
viewLoading = viewLoading2;
//do i need to retain, alloc, or release something here?
}
2在第一個代碼,做我需要釋放viewLoading在dealloc的?如果我不申報財產,會發生什麼?
在第二碼,它有與所述第一碼相同的效果? (需要dealloc或不)。
對於第三碼,它具有與第一代碼相同的效果?我編碼後該怎麼辦? (見註釋)
待辦事項iPhone的代碼始終需要有在.H聲明可變釋放?或者只有在.h中聲明的變量被分配了?如果像在第一個代碼中那樣,我是否需要dealloc viewLoading?
什麼是
之間的不同self.viewloading = viewLoading2;
和
viewloading = viewLoading2;
感謝
您好,感謝您的答案。因此,在第一個代碼,它是無效的或不?因爲你說「只要你發送relese到viewLoading2,其不是很有用的代碼「。viewLoading2不保留viewLoading嗎?我需要做viewLoading發佈嗎? 對於第二個代碼,我可以將發佈版本留給dealloc嗎? –
我也編輯了我的問題。也許你可以回答它:D –
讓我澄清我的代碼1的答案。它是有效的語法,沒有內存泄漏,但它是無用的代碼,因爲viewLoading指向一個已經發布的對象。你在賦值語句中所做的只是讓兩個指針指向同一個對象,然後再發布。所以他們都指向一個不再有有效對象的內存位置。 – Flyingdiver