Скажем, у меня есть объект с именем MyClass, свойство которого определено как @property (nonatomic, retain) NSString *foo;
, и я синтезирую это свойство.
Затем в другом классе, скажем, делегату приложения я определяю строку (но это может быть что угодно) NSString *myString = [[NSString alloc] initWithString:@"Hi"];
и вызываю экземпляр MyClass: [myClass setFoo:myString];
Что на самом деле происходит?Установлена ли ссылка на пространство, выделенное для myString
?Или он получает то, что находится в выделенной памяти для myString
и устанавливает его в выделенную память для foo
, так как я вызвал retain
на foo
?
И я должен освободить myString
в приложении делегат.И я должен выпустить foo
в MyClass, так как он был сохранен, но должен ли я выпустить его снова, так как ему была назначена другая переменная alloc'd?