Я новичок в objective-c, и я пытаюсь понять управление памятью, чтобы все было правильно.
После прочтения превосходного Руководство по программированию управления памятью для Cocoa apple. Единственное мое беспокойство - когда фактически автореализованный объект выпущен в приложении iphone/ipod. Мое понимание находится в конце цикла . Но что определяет цикл выполнения в приложении?
Так что мне было интересно, правилен ли следующий фрагмент кода. Предположим, что объект
@implementation Test
- (NSString *) functionA {
NSString *stringA;
stringA = [[[NSString alloc] initWithString:@"Hello"] autorelease]
return stringA;
}
- (NSString *) functionB {
NSString *stringB;
stringB = [self functionA];
return stringB;
}
- (NSString *) functionC {
NSString *stringC;
stringC = [self functionB];
return stringC;
}
- (void)viewDidLoad {
[super viewDidLoad];
NSString* p = [self functionC];
NSLog(@"string is %@",p);
}
@end
Является ли этот код действительным?
Из текста яблока я понимаю, что NSString, возвращаемая из functionA, действительна в области functionB. Я не уверен, действительно ли это в functionC и в viewDidLoad.
Спасибо!