草庐IT

weak_ptr

全部标签

boost::asio::read 抛出编译错误 'read_some' 不是 'boost::shared_ptr<boost::asio::ip::tcp::socket>' 的成员

我正在尝试构建一个客户端以通过特定协议(protocol)从服务器获取数据。我知道我的代码不是最好的-但目前我仍在试验BoostASIO的基本功能。我想从TCP-Function中实现读取,它会阻塞直到接收到特定数量的字节。我的问题:当我调用boost::asio::read或boost::asio::write时出现以下错误:错误C2039:“read_some”:不是boost::shared_ptr的成员我正在使用VS2013Professional,Boost1.55.00(预编译)。这是我的代码:(您可以通过注释“//HEEERE”找到该行boost::mutexcout_l

ios - 在这个闭包中我需要 [unowned self] 还是 [weak self]?

overridefuncviewDidLoad(){super.viewDidLoad()self.view.backgroundColor=UIColor(netHex:0xfc3158)fadeBackground()NSTimer.scheduledTimerWithTimeInterval(self.fadeTime,target:self,selector:Selector("fadeBackground"),userInfo:nil,repeats:true)}funcfadeBackground(){UIView.animateWithDuration(self.fade

swift - 如何在 curried 函数中指定 `weak` self

我有一个UIViewController,它在其属性之一上调用异步函数。对于回调,我想提供一个具有正确参数类型的函数,而不是闭包。classFetcher{funcfetch(completion:([String]->())){//...dostuffcompletion([...])}}classViewController:UIViewController{letfetcher=Fetcher()funcfetch(){fetcher.fetch(didFetch)}funcdidFetch(result:[String]){//handleresult}}一切正常,除了两个对象

swift - 在 Swift 3 中将 C 数组 ptr 转换为 native 数组

我有一个来自C库的指向float数组的指针。它的类型是UnsafeMutablePointer。如何在Swift3中由此创建原生[Float]数组?这是我正在尝试的:varreconstructedFloats=[Float](repeatElement(0,count:size))reconstructedFloats.withUnsafeMutableBufferPointer{letreconstructedFloatsPtr=$0print(type(of:$0))//"UnsafeMutableBufferPointer"cFloatArrayPtr?.withMemoryR

ios - 为什么会有弱者和无主?为什么我们不能总是使用 weak?

我刚刚阅读了ARCsectionintheSwiftbook以及其他一些关于weak和unowned引用的相关文章。在阅读之后,我确实清楚地了解了它们是什么以及它们各自在什么情况下使用(另请参阅thisSOpost对此给出了很好的解释)。但是,我无法理解为什么Apple甚至想出了这两种解决方案?本质上,从MM的角度来看,两者都归结为不创建对引用对象的强引用(即不增加其retainCount)。那么,为什么还要在这里提供两个MM原语呢?现在,开发人员需要了解何时使用两者中的哪一个,Apple在解释不同场景方面做得很好,但他们没有说明原因。难道不是更简单吗?仅提供weak,以便开发人员无需

Swift:元组中的 `weak` 引用

是否可以在Swift4中创建具有弱引用的元组?像这样:letx:(name:weakMyClass,name2:weakMyClass2) 最佳答案 首先,弱变量必须是可选的。其次,正如@Hamish在评论中所说,您不能将元组字段定义为弱字段。解决方法但是,如果你真的想使用元组,这里有一个解决方法第1步让我们定义一个对其内部对象有弱引用的包装器structWeakWrapper{weakvarvalue:Element?init(_value:Element){self.value=value}}第2步您的2个类(class)cla

ios - 为什么 Xcode 不让 outlets unowned 而不是 weak?

Xcode将outlet生成为具有隐式展开的弱变量,如下所示:@IBOutletweakvarnameTextField:UITextField!我想知道为什么它不只是生成onownedvar,据我所知-行为完全相同,但保持类型非可选。这两者有什么区别吗?weakvarfoo:UITextField!unownedvarfoo:UITextField 最佳答案 weak变量有一个默认值,即nil,因此您的代码是合法的,因为outlet属性在对象创建时(之前socket实际上已连接)。但是unowned变量没有默认值,您的代码将无法编

ios - 如果我使用单例网络服务发出网络请求,是否需要使用 [weak self]?

假设我有一个使用Alamofire的SessionManager的网络单例,如下所示:导入AlamofireclassNetwork{staticletshared=Network()privateinit(){}privatevarsessionManager:SessionManager={letconfiguration=URLSessionConfiguration.defaultconfiguration.httpAdditionalHeaders=SessionManager.defaultHTTPHeadersreturnSessionManager(configurat

swift - 可以使用 weak 为什么要使用 unowned?

这个问题在这里已经有了答案:Whatisthedifferencebetweenaweakreferenceandanunownedreference?(7个答案)关闭8年前。在Swift中,可以选择使用unowned或weak。当可以使用weak时,为什么要使用unowned?看起来两者几乎相同,weak更安全。

c++ - swift 3 中是否有等效的 c++ shared_ptr?

我知道swift3中的强引用(默认)和弱引用(使用weak关键字),但是是否有等效的共享引用?谢谢 最佳答案 Swift中的内存管理范式与C++不同,因为它继承了Objective-C的保留-释放机制(通过ARC)。如您所料,C++的解决方案减少了编译器的责任,更具表现力和优化,但使用起来也更复杂。因此,回答您的问题:strong(默认)基本上像shared_ptr一样工作,weak就像weak_ptr和unique_ptr没有直接的等价物。但是,如果编译器能够保证指针的唯一性(例如,您在同一范围内创建和销毁对象-就像函数的主体-而