Cocoa 我是否需要保留在参数中接收的对象?

Cocoa 我是否需要保留在参数中接收的对象?,cocoa,memory-management,Cocoa,Memory Management,如果我有一个使用输入的方法,我必须保留吗 - (void) exampleMethod: (NSString *)input { self.hey = [input retain]; } 如果我多次使用input会怎么样?您不需要保留一个只打算在方法中使用的参数。如果您要将引用保留更长的时间(就像您在示例中看到的那样),那么在大多数情况下您应该这样做 但是,如果您正在使用一个属性(您似乎也在这里),那么您应该在属性setter本身中管理内存,而不是在调用setter时显式地调用reta

如果我有一个使用输入的方法,我必须保留吗

- (void) exampleMethod: (NSString *)input {
    self.hey = [input retain];
}

如果我多次使用
input
会怎么样?

您不需要保留一个只打算在方法中使用的参数。如果您要将引用保留更长的时间(就像您在示例中看到的那样),那么在大多数情况下您应该这样做


但是,如果您正在使用一个属性(您似乎也在这里),那么您应该在属性setter本身中管理内存,而不是在调用setter时显式地调用retain。

您不需要保留只打算在方法期间使用的参数。如果您要将引用保留更长的时间(就像您在示例中看到的那样),那么在大多数情况下您应该这样做


但是,如果您正在使用一个属性(您似乎也在这里),那么您应该在属性setter本身中管理内存,而不是在调用setter时显式调用retain。

阅读。如果
hey
是设置了
retain
copy
属性的属性,则无需对其调用
-retain
(您只需执行
self.hey=input

阅读下面的文章。如果
hey
是设置了
retain
copy
属性的属性,则无需对其调用
-retain
(您只需执行
self.hey=input

在这种情况下,对.hey属性a retain的赋值在访问器方法中是隐式的


如果要在不使用访问器方法的情况下继续使用该字符串,可能需要保留该字符串以及使其可用的范围。

在这种情况下,对.hey属性a retain的赋值在访问器方法中是隐式的

如果要在不使用访问器方法的情况下继续使用该字符串,则可能需要保留该字符串以及使其可用的范围