目标c-保留之间的差异



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

@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];

字符串在内存中。


有人告诉我为什么吗
分配/保留的方式不一样吗
有什么不同?

谢谢。

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

self.A_StringToRetain = someString;

[self setA_StringToRetain:someString];

这里的关键是self.,这意味着您通过属性而不是直接访问ivar本身。