Нет, звонки [temp retain]
не сохранят a
и b
. Типичный шаблон, который вы увидите, состоит в том, что a
и b
сохраняются в методе -init
класса и высвобождаются в методе -dealloc
, который сохраняет их до тех пор, пока объект находится. Например:
@implementation Foo
- ( id)initWithA:( NSString * )aString andB:( NSString * )bString
{
if ( self = [ super init ]) {
a = [ aString copyWithZone:[ self zone ]];
b = [ bString copyWithZone:[ self zone ]];
}
return self;
}
- ( void )dealloc
{
[ a release ];
[ b release ];
[ super dealloc ];
}
@end
В этом примере a
и b
автоматически сохраняются в результате вызова -copyWithZone:
. Вам не нужно сохранять их самостоятельно.