这些保留之间有什么区别?:
@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];
字符串在内存中。
有人告诉我为什么好吗?
这与分配/保留的方式不同?
有什么区别?
感谢。
答案 0 :(得分:1)
您是直接设置变量而不是通过属性(应用保留)...您需要......
self.A_StringToRetain = someString;
或
[self setA_StringToRetain:someString];
这里的关键是self.
,这意味着你通过财产而不是直接进入伊娃。