我在內存管理上有問題(目標C)。有兩種理想的情況。ObjC/iPhone中的內存管理
=============================情景1 =============== =========================
(void) funcA
{
MyObj *c = [otherObj getMyObject];
[c release];
}
-(MyObj *) getMyObject //(this method is available in other OtherObj.m file)
{
MyObj *temp = [[MyObj alloc] init];
// do smothing here
return temp;
}
================== ===========場景2 ===================================== ===
(void) funcA
{
MyObj *c = [otherObj getMyObject];
}
-(MyObj *) getMyObject //(this method is available in other OtherObj.m file)
{
MyObj *temp = [[myObj alloc] init];
// do smothing here
return [temp autorelease];
}
myObj擁有巨大的數據塊。
在第一種情況下,我從其他文件獲取myObj(分配),所以我必須在我自己的方法中發佈。 (根據任何C/C++語言庫,像strdup將返回字符串重複,這將由開發人員而不是通過strdup方法realase)。
在第二個場景中,我從其他Obj.m文件獲取myObj(分配),所以otherObj.m文件負責釋放分配的內存(意味着autorelease)?這樣對嗎?
請讓我知道根據蘋果內存指導原則,哪種方案更高效和有效。 請不要顯示任何文件鏈接。
感謝 馬努
您可能想要單擊工具欄中帶有所有二進制數字的小圖標,它會將其格式設置爲代碼:)。 – 2010-03-16 05:51:59