objective-C的shared_ptr/weak_ptr实现

lur*_*her -1 memory-management raii reference-counting objective-c

注意到如何妥善执行在当前Objective-C的引用计数(见这里这里),我敢肯定,必须有在那里提供类似于C++的东西图书馆shared_ptrweak_ptr语义没有所有这些荒谬的额外的调用retain,并release应自动调用何时(指针)变量超出范围

这可能在ObjC上吗?我知道ObjC没有析构函数,所以当变量超出范围时,没有办法自动调用,但这些retain/ release调用怎么可能真的有必要呢?我是以错误的方式绕过这个吗?

Dav*_*ong 9

注意到当前Objective-C中引用计数的严重程度如何......

我对此提出异议.它实施起来并不糟糕.只是不熟悉它. 认为这很简单,因为你必须知道几条规则.所以不要因为对你不熟悉而敲门.

这可能在ObjC上吗?

是的,这是可能的.它被称为ARC("自动参考计数").有关详细信息,请参阅" 转换到ARC发行说明 ".

我知道ObjC没有析构函数

实际上,确实如此.这就是-dealloc方法.

......当变量超出范围时

关于Objective-C的事情是对象不会超出范围,因为对象只能在堆上分配(<在这里插入关于非复制块的常规警告>).指向这些对象(即变量)的指针可以进出范围,但是对象本身始终在范围内,因为堆在技术上被视为范围内的全局.(只是如果你丢失了一个物体的地址,它几乎不可能再找到它)

  • @lurscher Stack Overflow用于获取事物的答案,而不是讨论你认为他们应该如何.加入邮件列表. (2认同)