我是一个OC的初学者,有一定的C++基础,学习OC(目前版本)最大的感觉是过于自动化,导致理解有断层。比如,实例变量的隐藏。。让我困惑了许久。。
特别是对于内存这一块,
比如@synthesize 自动生成的getter & setter 是否可以正确的初始化堆上的属性。
stringWithFormat 类似方法可以返回一个实例,接受的变量不需要alloc 和 init。
NSFont 使用的时候,不可以alloc 和 init。
基于以上疑惑,引出我很低级的发问的。
所有堆上的属性,都需要在setter 或 getter 进行内存分配(无论是alloc init,或者像stringWithFormat 这样的也可以)
@synthesize 自动生成的getter & setter 是不是仅仅生成 _value = value这段代码。对堆上的属性是不好用的
对于类使用alloc,alloc 究竟分配了什么内存?属性所占得内存会不会被分配。
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
现在iOS开发已经不需要去用@synthesize了,当你添加一个属性后,系统会自动的添加与该属性同名且带下划线的实例变量,并且自动生成这个实例变量的setter和getter方法。
stringWithFormat 类似方法可以返回一个实例,接受的变量不需要alloc 和 init。
//OC中有类方法和实例方法两类,类方法调用后会返回一个对象,相当于执行了alloc+init操作
有关属性、对象的概念你可以访问下我的博客(www.hcios.com),搜索:属性、对象可以得到详细解答。
你调用的NSString的 stringWithFormat 和NSfont 的方法 都是类方法,你可以看下什么是实例方法 什么是类方法