当我们调用的alloc与一类,所述对象的引用计数是否为1。例如:NSObject *obj = [NSObject alloc]
;,执行这行代码后,将对象的引用计数是0或1?我看了源代码,我找不到一些代码说明了对于引用计数的任何操作的alloc
方法。如果对象的引用计数为0,则对象将被破坏,如果是1,那么它是如何实现的,是否有人可以帮助解决混淆,谢谢!当类通过alloc方法创建对象时,对象的引用计数是否更改为1?
-1
A
回答
0
在MRC模式下,alloc
方法创建对象并且引用计数将被计算为1.意味着类创建了对象并保留它。
如果创建一个方法的局部对象,而忘记释放,内存会被泄露。您需要手动释放它:[obj release];
。
OCNE alloced一个目的,是用于设定保留计数为1。因为对于caculating引用计数该方法将返回1,如果不存在其他类保持的对象没有操作。如果另一个对象保留当前对象,则当前对象的参考表将保存该保留。然后通过计算增加结果。方法来源:
uintptr_t
objc_object::sidetable_retainCount()
{
SideTable& table = SideTables()[this];
size_t refcnt_result = 1;
table.lock();
RefcountMap::iterator it = table.refcnts.find(this);
if (it != table.refcnts.end()) {
// this is valid for SIDE_TABLE_RC_PINNED too
refcnt_result += it->second >> SIDE_TABLE_RC_SHIFT;
}
table.unlock();
return refcnt_result;
}
0
它的保留计数是1,直到它的块; 还有一对象需要它,它的保留计数将1 增加它会存在,直到没有人需要它;
相关问题
- 1. 是否ALLOC方法递增对象的引用计数
- 2. 为什么singleton对象是通过类方法创建的?
- 3. iOS是否更改对象的引用?
- 4. (Java)为通过反射创建的新对象创建方法?
- 5. 通过对象的引用创建一个对象
- 6. python通过引用对象名称通过变量创建对象,从列表中创建对象
- 7. 通过调用该对象的实例方法更改对象值
- 8. 创建子类对象是否也创建其超类的对象?
- 9. 是否在不经过alloc的情况下创建了objective-c中的对象?
- 10. 交叉引用的JS对象变量当创建对象
- 11. 当对象被创建时
- 12. 你能通过对象引用创建一个类吗?
- 13. 通过计算引用C#对象
- 14. 无法通过动作创建对象
- 15. 创建对象的引用
- 16. 创建对象的引用
- 17. 引用当前对象中的方法
- 18. Java - 创建对象时无需更改原始对象
- 19. 通过引用修改Javascript对象
- 20. 通过引用修改smarty对象
- 21. 创建Python方法对象
- 22. 当通过反射创建接口时将对象投射到对象
- 23. 仅当使用方法时,对象才是空引用?
- 24. 对象的引用计数
- 25. Convert.ChangeType()是否创建对象的副本或返回原始对象的引用?
- 26. 通过索引引用对象的属性是否安全?
- 27. 当通过对象数组迭代时,Javascript对象属性'null'
- 28. C++ alloc对象数组
- 29. 大多数方法来引用jQuery中新创建的对象?
- 30. 创建对象的函数引用var
我阅读“黄金”源,发现它是只在内存中开辟到对象的空间中,并且存在于所述对象没有参考计数的任何操作,则该引用计数的目的是1从那里? –
@Rushtoasktheway,回答已更新。 –
您提供的方法是当对象与“retainCount”一起使用时将执行的方法。如果我不调用“retaionCount”方法,这个方法不会被执行,所以当我调用“alloc”方法的时候,并没有实现这个方法。 –