草庐IT

self-modifying

全部标签

ios - 当有延迟并在 Collection View 中执行批量更新时,UIView.animate 中的 self 是否应该很弱?

一般来说,我知道我们在使用UIView.animate()时不需要让自己变弱,因为block没有被牢固地保持,但是在下面的代码中是否有使用weak的论据,因为延迟?为什么有人会说可能存在?UIView.animate(withDuration:0.1,animations:{self.performAction()}在下面的例子中,为什么我们需要使用weakself/不需要使用weakself...?collectionView.performBatchUpdates({self.collectionView.reloadData()...}) 最佳答案

swift - EXC_BAD_ACCESS 使用 self.performSelector

这是一个简单的学术而非真正的代码。我想使用performSelector函数运行打印方法。但是如果我在Playground上运行这段代码,就会抛出异常:EXC_BAD_ACCESS(code=EXC_I386_GPFLT).代码://:Playground-noun:aplacewherepeoplecanplayimportUIKit@objc(Foo)classFoo:NSObject{functimer(){self.performSelector(#selector(Foo.print))}@objcfuncprint(){NSLog("print")}}letinstance

Swift 4 使用协议(protocol)和 `Self` 伪造存在的方法

在Swift中有数百种使用协议(protocol)和Self来伪造存在性的解决方案,但它们大多指的是Swift2和Swift3可能带来的光明future......现在Swift4已经出来了,对泛型进行了很好的补充。但我找不到任何建议如何将其放入缺失的存在问题中。关于如何以Swift4方式解决这个问题有什么想法吗?例子:importUIKitprotocolBla{funccompare(other:Self)}extensionCGFloat:Bla{funccompare(other:CGFloat){print("ExtendedCGFloat")}}extensionUIEdg

swift - 带有 RxSwift 的 MVVM-C : '[weak self]' in closure

我正在使用RxSwift开发一个iOS项目,我使用带协调器模式的MVVM。这里是我的实现:View模型://MARK:-PrivateprivateletshowNextViewSubject=PublishSubject()//MARK:-InputsvarshowNextView:AnyObserver{returnshowNextViewSubject.asObserver()}//MARK:-OutputsvardidShowNextView:Observable{returnshowNextViewSubject.asObservable()}ViewController:p

ios - Swift : property 'self.circle1' not initialized at super. 初始化调用出错?

我是编程新手,正在尝试用Swift编写一个井字游戏应用程序,但这个错误使我无法运行该应用程序:属性“self.circle1”未在super.init调用时初始化。该应用程序尚未完成,但我看不到现有代码中的错误所在。请再次彻底解释任何建议,因为我是初学者。谢谢!我的代码:importUIKitclassViewController:UIViewController{//Initializingallimgsasvariables:@IBOutletstrongvarcircle1:UIImageView@IBOutletstrongvarcircle2:UIImageView@IBOu

swift - Swift 闭包中的 `self`

我想在Swift闭包中理解self。例如-()->Void={[weakself]inguardlet`self`=selfelse{self.callMethod2()}self.callMethod3()}为什么我们在这里使用反引号?这是好的编程习惯吗?self是如何弱捕获到这里的? 最佳答案 Swift4.2最近采纳了一项将此添加到语言中的提案:guardletself=selfelse{return}所提出的解决方案需要允许使用可选绑定(bind)将self从弱引用升级为强引用。更多细节引用swiftevolutionpro

objective-c - 有没有办法显示不使用弱 self 的警告?

每隔几个月,我都会遇到同样的问题,即ViewController没有被释放,因为没有在block中使用weak-self。有什么方法可以让Xcode警告我吗?谢谢。 最佳答案 这可能有助于-Warc-retain-cycles此外,如果您在Xcode中选择分析而不是构建,这将为您提供有关代码中不良做法的更多信息,其中包括有关使用弱变量的信息。另一个层次是使用Infer,Facebook开源的iOS/Android静态分析器:www.fbinfer.com另请参阅:http://fuckingclangwarnings.com/对于其

swift - 什么是 objc_sync_exit(self)

我看到在UISearchBarDelegate方法textDidChange中使用了这个函数。我到处寻找任何文档,但无法提出任何建议。只是想知道是否有人可以阐明此功能的作用。objc_sync_exit(self) 最佳答案 当您编写同步代码以停止某项运行多次(Objective-C:“@synchronized”)时,它会在幕后转换为对objc_sync_enter()和objc_sync_exit()的调用。如果您看到有人直接使用这些函数,这表明他们不能使用普通的旧同步块(synchronizedblock)(或他们自己的Swi

ios - Swift- 错误 : Variable 'self.___' used before being initialized

我正在尝试在Playground中使用手势识别器,但遇到了一些问题。这是我的类(class):classfoo{varfooVarSwipe:AnyvarfooVarTap:Anyinit(){letgr=UISwipeGestureRecognizer(target:self,action:#selector(foo.bar))lettr=UITapGestureRecognizer(target:self,action:#selector(foo.tar))helloApple.addGestureRecognizer(gr)helloApple.addGestureRecogni

Swift:在初始化程序中多次调用 Self.init

这个让我难住了。我不明白为什么Swift提示self.init在这段代码中被多次调用:publicinit(body:String){letparser=Gravl.Parser()ifletnode=parser.parse(body){super.init(document:self,gravlNode:node)}else{//Swiftcomplainswiththementionederroronthisline(itdoesn'tmatterwhat"whatever"is):super.init(document:self,gravlNode:whatever)}}除非我