Line 1: First.h
Line 2: @property (nonatomic, retain) NSString *name;
Line 3: First.m
Line 4: @synthesize name;
Line 5: -(void)viewDidLoad()
Line 6: {
Line 7: name = [NSString stringWithString:@"Hello"];
Line 8: OR
Line 9: self.name = [[NSString alloc]initWithString:@"Hello"];
Line 10: OR
Line 11: }
Line 12:-(void)dealloc()
Line 13: {
Line 14: [name release];
Line 14: }
问题1:如果我遵循第7行,则一切都很好,如果我使用了第9行,则存在内存泄漏。据我所知,自我是指向当前对象的对象,如果我使用self.object还是仅仅是对象就没有更多区别。
问题2:如果我使用过,则>]
@synthesize name = _name;
然后,哪个用于设置name的值,哪个用于获取name的值?之间的区别:
name = [NSString stringWithString:@"Hello"]; OR self.name = [NSString stringWithString:@"Hello"]; OR _name = [NSString stringWithString:@"Hello"];
问题3:如果我创建任何属性,那么在分配时显示内存泄漏是否需要在内存中分配?
第1行:First.h第2行:@property(非原子,保留)NSString * name;第3行:First.m第4行:@synthesize名称;第5行:-(void)viewDidLoad()第6行:{第7行:名称= [NSString ...
问题1:如果我遵循第7行,那么一切都很好,如果我使用了第9行,则存在内存泄漏。据我所知,自我是指向当前对象的对象,如果我使用self.object还是仅仅是对象就没有更多区别。
第一个问题
:之所以会出现泄漏,是因为使用alloc
方法初始化字符串时,您将保留创建的对象,但之后不释放该对象,因此在创建时会泄漏带有stringwithString
的字符串会得到一个自动释放的对象,该对象由自动释放池自动释放。请注意,在第9行的示例中,您正在初始化对象并将其传递给属性的setter,如果使用ivar ...,则情况将有所不同。要回答第二个问题
MRC
的概念的总结[[only: