草庐IT

self-register

全部标签

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

callback - 不可能对回调函数进行 self 引用

不知道如何正确表达问题,所以这里是代码:classFoo{funcfoo2(nextCall:()->()){}funcfoo(nextCall:()->()){funcf1(){foo2(f1)}}}浓缩了,但不确定是不是同类型的问题:classFoo{funcfoo(nextCall:()->()){funcf1(){foo(f1)}}}错误信息是:无法使用来自另一个本地函数的捕获来引用本地函数。知道如何解决这个问题吗?提供的函数用作回调函数,不知何故我想知道为什么不能使用该函数。 最佳答案 此代码成功编译:classFoo{f

ios - Rx swift : Is it safe to always use [unowned self] when a class has a disposeBag property?

我最近发现一篇文章说使用[unownedself]总是安全的,只要您将订阅添加到DisposeBag并且它在ViewController内.假设我有一个ViewController,其中deinit由于强引用而未被调用:classViewController:UIViewController{@IBOutletweakvarsearchBar:UISearchBar!@IBOutletweakvartableView:UITableView!privateletdisposeBag=DisposeBag()privatevarresults=Variable([])privatevar

swift - 快速关闭时 gcd 中的弱 self

apiFunc(user:User.currentUser,start:0,limit:Constants.numberOfItemInOnePage,success:{[weakself](friends)->Voidindispatch_async(dispatch_get_main_queue(),{[weakself]()->VoidinifletstrongSelf=self{strongSelf.friendList=friendsstrongSelf.loading=falsestrongSelf.tableView.reloadData()}})},failure:ni

ios - 是什么导致我的 AppDelegate 中的 self 未定义?

我已经在一个应用程序上工作了几个星期,然后进行了一次重大重构,但不知何故破坏了我的应用程序委托(delegate)。如果我在applicationDidFinishLaunchingWithOptions中放置一个断点,然后键入pself,我会看到以下错误:error::1:1:error:useofunresolvedidentifier'self'self^如果我在applicationDidBecomeActive中放置一个断点并键入pself那么我不会收到任何错误并且self似乎被正确“定义”。如果我从一个新项目开始我就不会遇到这个问题。我的AppDelegate.swift如

swift - 为什么当我的便利初始化程序在 if-let 语句中运行 self.init 时,Swift 会给我一个编译器错误?

这是我想要编译的代码示例:classFruit{varname:Stringinit(name:String,season:String){self.name=name}convenienceinit?(data:[String:String]){ifletname=data["name"],region=data["region"]{self.init(name:name,season:region)}}}编译器错误是“在调用self.init之前在委托(delegate)初始化程序中使用‘self’”如果初始化程序是可失败的,我不应该能够拥有不运行任何初始化程序的代码路径吗?如果您

ios - 为什么 iOS 11 : self. performSegue() 不工作?

我今天开始迁移到Xcode9和iOS11版本。在我的基于故事的应用程序中,以下代码:self.performSegue(withIdentifier:Const.UI.Segue.showIntro,sender:self)在所有以前的iOS中运行良好(刚刚通过iOS10.3、10.0、9.0验证)但在iOS11中无法运行。附加代码:privatefunchandleSuccessfulLogin(){self.log.info("LoggedIn")DispatchQueue.main.async(){self.performSegue(withIdentifier:Const.UI

ios - 如何在init函数中实例化一个依赖self的对象?

我知道在调用super.init()之前需要定义所有属性。但是如果一个属性的初始化依赖于self呢?在我的例子中,我需要初始化一个具有委托(delegate)的对象,我需要将其设置为self。执行此操作的最佳方法是什么?classMyClass:NSObject{varcentralManager:CBCentralManageroverrideinit(){super.init()centralManager=CBCentralManager(delegate:self,queue:nil)}}这是错误的,因为centralManager没有在super.init之前初始化。但我也无

ios - 初始化变量 : 'self' captured by a closure before all members were initialized

我在初始化自定义类时遇到问题。当初始化更新属性的类时,我需要在一些数据上设置一个观察者。最初,属性可以为空,这就是我在启动时设置它们的方式。但是,Xcode仍然会抛出“在所有成员初始化之前由闭包捕获的‘self’”错误。这是代码的简化版本。classFoo{init(){self.usersRef=ref.child("users")self.usersRef.observe(DataEventType.value,with:{(snapshot)in//snapshoterrorchecking//usersis[String]self.users=users})}privateva