Objective-C运行时系统:对象管理与消息转发深度解析
1. 单例对象的创建
在Objective - C中,有时我们希望某个类只有一个实例。可以通过将检查接收器是否需要初始化的代码放在分配方法内,而不是 init... 方法内,来避免在不需要时分配新实例。例如, Soloist 类的 soloist 方法确保该类只有一个实例:
+ soloist
{
static Soloist *instance = nil;
if ( instance == nil )
{
instance = [[self alloc] init];
}
return instance;
}
这个方法利用静态变量 instance 来存储唯一的实例,只有在 instance 为 nil 时才会分配并初始化一个新实例。
2. 对象的保留与复制
在某些情况下,我们不希望接收到的对象被释放,比如需要将对象缓存到实例变量中。这时可以使用 retain 方法,它可以阻止待处理的自动释放(或提前阻止后续的释放或自动释放消息),确保对象在我们使用期间不会被释放。
例如,当设置对象的主链轮( mainSprocket )时:
超级会员免费看
订阅专栏 解锁全文

31

被折叠的 条评论
为什么被折叠?



