草庐IT

self-reference

全部标签

swift - 符合返回 "Self"的静态函数

当尝试符合NSItemProviderReading时,出现以下错误:该方法的协议(protocol)定义如下:publicstaticfuncobject(withItemProviderDatadata:Data,typeIdentifier:String)throws->Self协议(protocol)静态函数返回类型“Self”,我试图将其更改为实际类的名称,但它不再符合NSItemProviderReading。如何返回“self”?更新:这是当我要求Xcode修复它时发生的情况:它追加为!自己,但随后显示2个错误和此警告,它看起来令人困惑,因为它似乎想恢复到以前的状态,在这

swift - 将 [unowned self] 添加到闭包参数 Swift

我有一个带有完成处理程序的函数,返回一个或多个参数。在客户端中,当执行完成处理程序时,我希望有一个unowned对self的引用,以及对传递的参数的访问权。这是说明问题和我要实现的目标的Playground示例。importUIKitstructStruct{funcfunction(completion:(String)->()){completion("Boom!")}funcnoArgumentsFunction(completion:()->Void){completion()}}classClass2{funcexecute(){Struct().noArgumentsFun

swift - NSKeyValueObservation observe() 闭包中是否需要弱 self ?

我有:privatevarstatusLabel:UILabel!privatevarerrorObserver:NSKeyValueObservation?self.errorObserver=self.viewModel.observe(\.errorString){[weakself](viewModel,change)inself?.statusLabel.text=viewModel.errorString}这里需要[weakself]吗? 最佳答案 简短回答:是的,您确实需要[weakself]。不必在deinit中显式

swift - 'let' 属性不能直接初始化;使用 "self.init(...)"或 "self = ..."代替

我想尝试在protocol扩展中编写一个默认的init,所以我这样做了:protocolP{vardata:[AnyHashable:Any]{get}init(_s:String)}extensionP{init(_s:String){self.data=["s":s]}}但是我收到了这个错误:'let'property'data'maynotbeinitializeddirectly;use"self.init(...)"or"self=..."instead我不知道这是什么意思。感谢您的帮助! 最佳答案 该错误表明该变量无法在

swift - 在 Swift 中获取错误 Ambiguous reference to member 'subscript'

字典需要扩展以获取文本键值(如果存在)。执行以下代码并成功编译:extensionDictionarywhereKey:ExpressibleByStringLiteral,Value:AnyObject{funcgetValueForKeyPath(keyValue:String)->String{return((self["item_qty"]as?Dictionary)??["":""])?["text"]??""}}但是当我对方法做一些小改动时,出现错误:"Ambiguousreferencetomember'subscript'"extensionDictionarywher

ios - Recursion::How to create a mini-view of 3d scenekit of self on top of self?

我有一个带有SceneKit的3d世界,效果很好,可以平移、放大/缩小,但我想在更大的3d世界之上创建3d世界的迷你View。因此,如果用户放大到非常精细的分辨率,他们仍然知道他们在空间中的位置。大多数示例似乎在SceneKitVC之上覆盖了一个不同的VC,如SpriteKit,并带有类似overlaySKScene的内容。迷你版不会放大/缩小,但会平移、改变照明等,但它不接受手势。这更像是如何将self的迷你版本放在self之上的递归。 最佳答案 这是我的做法:您可以简单地在场景中添加另一个相机,然后渲染到SCNLayer。然后,

ios - 是否需要将 scrollview.delegate 设置为 self?

我正在参加斯坦福大学提供的在线iOS类(class)。在示例代码中,@IBOutletweakvarscrollView:UIScrollView!{didSet{scrollView.contentSize=imageView.frame.size//allthreeofthenextlinesofcode//arenecessarytomakezoomingworkscrollView.delegate=selfscrollView.minimumZoomScale=0.03scrollView.maximumZoomScale=1.0}}但是,如果我删除scrollView.de

ios - 使用 Array 而不是 NSArray 时出现错误 "ambiguous reference to member subscript"

当我尝试访问数组类型值然后出现错误时,我在可能包含数组类型值的字典中收到类似“对成员下标的模糊引用”的错误。请检查以下代码。varoccupations=["Malcolm":"Captain","Kaylee":"Mechanic","Layme":["Engineer","Docter"]]as[String:Any]occupations["Jayne"]="PublicRelations"vararrOfLayme=occupations["Layme"]as!Array//gettingerrorhere,IfIuseNSArrayinsteadofarrayallwillw

swift - 由于 [weak self],我发现自己经常使用 "if self != nil"...这正常吗?

示例(在我的ViewController中):RESTApi.fetchUser(){[weakself]Voidinifself!=nil{//theviewcontrollerisstillhere.self!.items.append(stuff)self!.whatever}}我注意到我立即使用ifself!=nil,然后到处都是self!。有没有更好的办法?我觉得这有悖于Swift的方式。注意:我使用[weakself]因为我的ViewController可能为nil(如果用户在RESTApi下载数据之前返回)。 最佳答案

swift 3 : capture strong self in @escaping closure without asynchronous work

有一个带有以下声明的协议(protocol):typealiasSuggestionSourceCallback=([Suggestion])->()protocolSuggestionSource{funcsuggest(_query:SuggestionQuery,callback:@escapingSuggestionSourceCallback)}有两个类实现了这个协议(protocol)。第一类异步获取建议(通过GCD)finalclassFisrtClass:SuggestionSource{privateletqueue=DispatchQueue(label:"my.a