2017-07-18 63 views
0

当我们调用allocClass,所述对象的引用计数是否为1。是否ALLOC方法递增对象的引用计数

例如:

NSObject *obj = [NSObject alloc];

这样之后的代码被执行,对象的引用计数是0还是1?

我看了alloc的源代码,但是没发现alloc方法会对对象的引用计数有任何操作,此时引用计数的对象仍然是0?

如果为0,那么对象将被破坏,但如果不为0,它是如何实现的,

我希望有人能帮助我解答困惑的心,谢谢!

+0

你还在ARC之前? ARC可以帮你解决这个问题,但通常在你完成一个对象的分配之后,它会得到一个引用1.为了管理这个,如果你在ARC之前,你可以使用autorelease或者dealloc来给对象再次赋值0。 – ppinho

+0

感谢您对我的格式进行优化,我最近在阅读这样一个困惑的源码的时候,不知道在“alloc”中,引用计数的对象是1,因为我没有找到有效的确认这个问题代码 –

+0

这是我朋友发的一篇文章,我也看过了,但是仍然没有解决我心中的困惑 –

回答

2

alloc 创建引用计数为1的对象。它不创建引用计数为0并增加引用计数。首先,这将是低效的(每个对象创建一个额外的保留调用),其次,它不起作用,因为一旦一个对象的引用计数为0,Objective-C将绝对地释放该对象;没有办法停止释放,并且其一个副作用是不能增加或减少具有零引用计数的对象的引用计数。

+0

“Alloc”是如何实现引用计数的对象1,Apple是如何实现的? –

相关问题