这些保留之间有什么区别?:
@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本身。