草庐IT

unowned-references

全部标签

closures - 为什么闭包中的 "unowned self"在 Swift 中不能正常工作?

Apple的Swift语言官方指南中的代码如下:classHTMLElement{letname:Stringlettext:String?@lazyvarasHTML:()->String={[unownedself]iniflettext=self.text{return"\(text)"}else{return""}}init(name:String,text:String?=nil){self.name=nameself.text=text}deinit{println("\(name)isbeingdeinitialized.")}}在闭包中使用带有unowned的捕获列表来

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

class - swift 类 : reference cycle

当我运行下面的程序时,它会产生段错误。你能帮我弄清楚为什么吗?谢谢classAnimal:NSObject{varname:String!varage:UInt!weakvarspouse:Animal?init(name:String,age:UInt){self.name=nameself.age=age}funcdescription()->String{//tobecomeprintablereturn"name=\(name)andage=\(age)spouse=\(spouse)"}}letdog=Animal(name:"Lucky",age:3)letcat=Anim

Swift 闭包 [unowned 单例]

在Swift中存在递归内存泄漏问题,其中一个单例在另一个单例的闭包内被调用。NetworkManager.sharedInstance.doThingWithCompletion(urlString){[unownedself](complete)->Voidinifcomplete==true{ifself.fetchedResultsController.fetchedObjects?.count>0{CoreDataManager.sharedInstance.save(self.dictionary,completion:{(complete)->Voidin})}}}如何将单

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

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

swift - [unowned self] 是什么意思,有什么好处?

我正在尝试集成Face/TouchID登录,我在Apple的文档中看到了[unownedself],在一个闭包内。那是什么,有什么好处?示例代码:letcontext=LAContext()varerror:NSError?ifcontext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics,error:&error){letreason="Identifyyourself!"context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics,localize

swift - Codable - arrayPropety [AnyObject] : Reference to member 'data' cannot be resolved without a contextual type

设置Codable类。AnyObjects数组产生编译错误:Referencetomember'data'cannotberesolvedwithoutacontextualtypeclassClassA:NSObject,Codable{//MARK:-Propertieslettitle:Stringletdata:[T]//dataisanarrayofeitherCodableobjectsofClassBorClassC.//MARK:-KeyesprivateenumCodingKeys:String,CodingKey{casetitlecasedata}required

swift - 始终对 Swift 单例使用 [unowned self] 安全吗?

由于共享的单例实例将始终存在,我们能否在该单例类的所有闭包中安全地使用[unownedself]? 最佳答案 当然,这是安全的。但这不是一个好的理由。使用弱引用还是强引用应该根据你所写的函数中的内存管理特性而定。例如,如果一个闭包被对象强引用,那么闭包应该捕获对该对象的弱引用;这是安全的,因为没有其他人引用闭包,所以它只能在主对象还活着的时候执行,等等。如果没有保留周期,闭包会被提供给一个单独的API,这样它就不会被绑定(bind)到主对象的生命周期,那么闭包应该对主对象有强引用。这个推理同样适用于单例和非单例。

ios - "Ambiguous reference to member map"来自具体类型

这是我的代码。它使用来自CoreBluetooth的CBUUID。让我们假设v的转换是有效的。importUIKitimportCoreBluetoothfuncconvert(v:AnyObject)->[String:String]{return(vas![CBUUID:NSData]).map{(uuid,data)in(uuid.UUIDString,NSString(data:data,encoding:NSUTF8StringEncoding)??"")}}想法是通过为CBUUID调用CBUUID.UUIDString并通过调用适当的NSString构造函数来获取字典的字符

ios - Swift + Storyboard : How to keep strong reference to show segue controller?

我有两个Controller:HistoryViewController,它有一个“浏览”按钮。这嵌入在NavigationController中WebBrowserViewController,将通过HistoryViewController中的浏览按钮访问浏览按钮连接正常。当我点击它时,它会将我带到网络浏览器ViewStoryboard。但是,当我按下返回键并再次点击“浏览”按钮时,它总是会生成一个新的Web浏览器View。因此,如果我在Web浏览器View中的某个页面上返回历史View,然后再次点击“浏览”,我总是会返回主页并丢失当前页面。有没有一种方法可以保持对WebBrows