У меня вопрос в управлении памятью (цель C). Существует два идеальных сценария.Управление памятью в ObjC/iPhone
================================== 1 сценарий 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).
Во втором сценарии я получаю myObj (выделено) из файла otherObj.m, так что файл otherObj.m ответственен за освобождение выделенной памяти (средняя автореферат)? Это правильно?
Пожалуйста, дайте мне знать. Какой сценарий более эффективен и действителен в соответствии с правилами памяти Apple. Пожалуйста, не показывайте мне ссылку на документ.
Благодаря Manu
Возможно, вы захотите щелкнуть маленькую иконку на панели инструментов со всеми двоичными числами, она форматирует материал как код :). –