Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么弱属性需要运行时支持 在Boost C++中,弱指针作为对共享(引用计数)指针的观测器实现。p>_C++_Objective C_Ios - Fatal编程技术网

为什么弱属性需要运行时支持 在Boost C++中,弱指针作为对共享(引用计数)指针的观测器实现。p>

为什么弱属性需要运行时支持 在Boost C++中,弱指针作为对共享(引用计数)指针的观测器实现。p>,c++,objective-c,ios,C++,Objective C,Ios,它们是如何在objective-c中实现的,为什么需要运行时支持?(即除了具有编译器支持外,iOS 5或更高版本还需要使用弱引用)Objective-C弱引用在其指向的对象解除分配时设置为nil。这非常方便(它允许您解决引用周期并避免向解除分配的对象发送消息),但它确实要求运行时跟踪对对象的所有弱引用,并且当对象最终解除分配时,运行时必须取消这些引用 这两件事都只能由Objective-C运行时透明地完成。Objto-C没有相同的灵活性,C++在自己的代码中实现了这种神奇。 < Posiv.C弱

它们是如何在objective-c中实现的,为什么需要运行时支持?(即除了具有编译器支持外,iOS 5或更高版本还需要使用弱引用)

Objective-C弱引用在其指向的对象解除分配时设置为
nil
。这非常方便(它允许您解决引用周期并避免向解除分配的对象发送消息),但它确实要求运行时跟踪对对象的所有弱引用,并且当对象最终解除分配时,运行时必须取消这些引用


这两件事都只能由Objective-C运行时透明地完成。Objto-C没有相同的灵活性,C++在自己的代码中实现了这种神奇。

< Posiv.C弱引用被设置为nIL/COD>当它们指向的对象被释放时。这非常方便(它允许您解决引用周期并避免向解除分配的对象发送消息),但它确实要求运行时跟踪对对象的所有弱引用,并且当对象最终解除分配时,运行时必须取消这些引用


这两件事都只能由Objective-C运行时透明地完成。Objto-C没有与C++一样的在自己的代码中实现这种神奇的灵活性。

STD::VistuxPTR实际上包含指向保存簿记数据和引用对象的共享数据结构的指针。当被引用对象被销毁时,该共享数据被保留,以便弱小的PTR可以看到表明该对象已消失的簿记数据,并且在被引用对象被解除分配时,弱小的PTR本身不必修改

在Objective-C中,弱引用不指向保存簿记数据的中间对象。它们是指向实际引用对象的普通指针,如果引用对象消失,则指向nil。当代码的其他部分释放指向对象的最后一个非弱指针时,必须更新每个弱指针。这需要运行时支持


换句话说,Obj-C弱指针是普通指针,只是有编译器魔法(使用运行时支持)在使用它们,而共享的ptr和弱ptr只是实现它们自己的运行时支持的包装器(在智能指针的构造函数、赋值操作符、析构函数等中)围绕指针。

std::weak\u ptr实际上包含一个指向共享数据结构的指针,该结构保存簿记数据和引用对象。当被引用对象被销毁时,该共享数据被保留,以便弱小的PTR可以看到表明该对象已消失的簿记数据,并且在被引用对象被解除分配时,弱小的PTR本身不必修改

在Objective-C中,弱引用不指向保存簿记数据的中间对象。它们是指向实际引用对象的普通指针,如果引用对象消失,则指向nil。当代码的其他部分释放指向对象的最后一个非弱指针时,必须更新每个弱指针。这需要运行时支持


换句话说,Obj-C弱指针是正常的指针,只是有编译器魔法(使用运行时支持)在使用它们,而共享的ptr和弱ptr只是围绕指针实现自己的运行时支持(在智能指针的构造函数、赋值运算符、析构函数等中)的包装器。

;C++使用一个非常复杂的运行时——即它被称为“编译器”。C++使用运行时——一个非常复杂的运行过程——在这里它被称为“编译器”。