Может кто-нибудь сказать мне, как я на них ссылаюсь, является ли первый управляемым объектом системы, а второй управляемым пользователем объектом, какую терминологию я должен использовать в target-c / cocoa для ссылки на каждый из них?
01
+(Planet *) planet {
gPlanetCount++;
return [[[self alloc] init] autorelease];
}
int main(int argc, const char * argv[]) {
Planet *outerMost;
outerMost = [[Planet planet] retain]; // With
...
... some code
...
[outerMost release];
[pool drain];
return 0;
}
// OR
int main(int argc, const char * argv[]) {
Planet *outerMost;
outerMost = [Planet planet]; // Without
...
... some code
...
[pool drain];
return 0;
}
02
+(Planet *) newPlanet {
gPlanetCount++;
return [[self alloc] init];
}
int main(int argc, const char * argv[]) {
Planet *outerMost;
outerMost = [Planet newPlanet];
...
... some code
...
[outerMost release];
[pool drain];
return 0;
}
EDIT_001
Так что в первом примере мне нужно что-то вроде этого (текст переместился на 01 вверху)
EDIT_002
"Код исправлен, окончательный пересмотренный вопрос ниже ..."
Я собираюсь пойти с 01 (учитывая, что это более обычный способ), могу ли я снова спросить о сохранении / освобождении (то есть, если они необходимы), это компилируется и проходит через статический анализатор и с ними и без них?
* 1023 Гэри *