保留之间的区别

时间:2011-06-10 10:01:09

标签: objective-c memory nsstring memory-management retain

这些保留之间有什么区别?:

@property (nonatomic, retain) NSString *A_StringToRetain;

NSString *B_StringToRetain;
B_StringToRetain = [[MyClass GetStringValue] retain];

因为使用属性,字符串不会保留并使用第二种方式,一切正常,但我需要检查并释放以避免泄漏。


示例
我在.h

宣布
NSString *A_StringToRetain;
@property (nonatomic, retain) NSString *A_StringToRetain;

.m我使用

A_StringToRetain = @"MyValue";

但是当我退出方法时,我丢失了A_StringToRetain。这是一个僵尸。

如果我不使用属性并以这种方式声明字符串

NSString *B_StringToRetain;
B_StringToRetain = [[MyClass GetStringValue] retain];

字符串在内存中。


有人告诉我为什么好吗? 这与分配/保留的方式不同?
有什么区别?

感谢。

1 个答案:

答案 0 :(得分:1)

您是直接设置变量而不是通过属性(应用保留)...您需要......

self.A_StringToRetain = someString;

[self setA_StringToRetain:someString];

这里的关键是self.,这意味着你通过财产而不是直接进入伊娃。