草庐IT

self-assignment

全部标签

swift - 为什么闭包在 Swift 3 中默认都是非转义的而需要显式的 `self`?

我注意到在Swift2.2中,使用@noescape标记为非转义的闭包不需要显式的self。在Swift3中,默认情况下所有闭包都是非转义的,现在如果您希望它们能够转义,则需要使用@escaping标记它们。鉴于默认情况下Swift3中的所有闭包都是非转义的,为什么它们需要显式的self?finalclassSomeViewController:NSViewController{varsomeClosure:()->()={_in}overridefuncviewDidLoad(){super.viewDidLoad()someClosure={view.layer=CALayer()

swift - 为什么闭包在 Swift 3 中默认都是非转义的而需要显式的 `self`?

我注意到在Swift2.2中,使用@noescape标记为非转义的闭包不需要显式的self。在Swift3中,默认情况下所有闭包都是非转义的,现在如果您希望它们能够转义,则需要使用@escaping标记它们。鉴于默认情况下Swift3中的所有闭包都是非转义的,为什么它们需要显式的self?finalclassSomeViewController:NSViewController{varsomeClosure:()->()={_in}overridefuncviewDidLoad(){super.viewDidLoad()someClosure={view.layer=CALayer()

swift - 协议(protocol)扩展中的 'where self' 是什么

我看到了很多格式如下的例子extensionProtocolnamewhereSelf:UIViewController协议(protocol)扩展中的whereSelf是什么。我找不到这方面的文档。 最佳答案 语法是:https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html#//apple_ref/doc/uid/TP40014097-CH25-ID521考

swift - 协议(protocol)扩展中的 'where self' 是什么

我看到了很多格式如下的例子extensionProtocolnamewhereSelf:UIViewController协议(protocol)扩展中的whereSelf是什么。我找不到这方面的文档。 最佳答案 语法是:https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html#//apple_ref/doc/uid/TP40014097-CH25-ID521考

swift - 在初始化所有存储的属性之前使用“self”

我正在处理learn-swiftplayground并在学习语言时将其升级到Swift2.0。以下代码(可能适用于Swift的早期版本)现在会生成两个错误:“在初始化所有存储的属性之前使用了‘self’”和“在初始化之前使用了常量‘self.capitalCity’”classCountry{letname:StringletcapitalCity:City!init(name:String,capitalName:String){self.name=nameself.capitalCity=City(name:capitalName,country:self)}}classCity{

swift - 在初始化所有存储的属性之前使用“self”

我正在处理learn-swiftplayground并在学习语言时将其升级到Swift2.0。以下代码(可能适用于Swift的早期版本)现在会生成两个错误:“在初始化所有存储的属性之前使用了‘self’”和“在初始化之前使用了常量‘self.capitalCity’”classCountry{letname:StringletcapitalCity:City!init(name:String,capitalName:String){self.name=nameself.capitalCity=City(name:capitalName,country:self)}}classCity{

Cannot assign requested address错误解决

编程时候出现了socket绑定失败,返回值为-1。利用perror定位错位为cannotassignrequestedaddress。 大致上是由于客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端口号,所以新的连接没办法绑定端口,即“Cannotassignrequestedaddress”。是客户端的问题不是服务器端的问题。通过netstat,的确看到很多TIME_WAIT状态的连接。client端频繁建立连接,而端口释放较慢,导致建立新连接时无可用端口。解决办法执行命令修改如下内核参数(需要root权限) 调低端口释放后的等待时间,

Cannot assign requested address错误解决

编程时候出现了socket绑定失败,返回值为-1。利用perror定位错位为cannotassignrequestedaddress。 大致上是由于客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端口号,所以新的连接没办法绑定端口,即“Cannotassignrequestedaddress”。是客户端的问题不是服务器端的问题。通过netstat,的确看到很多TIME_WAIT状态的连接。client端频繁建立连接,而端口释放较慢,导致建立新连接时无可用端口。解决办法执行命令修改如下内核参数(需要root权限) 调低端口释放后的等待时间,

swift - RXSwift 闭包中的“[weak self]”

我需要在RXSwiftsubscribeNext闭包中使用[weakself]吗?我有代码:searchController.searchBar.rx_text.throttle(0.2,scheduler:MainScheduler.instance).subscribeNext{searchTextinself.viewModel.searchForLocation(searchText)}.addDisposableTo(DisposelBag.sharedDisposelBag.disposeBag)我是否需要修改它以便在闭包的开头有一个[weakself]捕获列表?像这样:s

swift - RXSwift 闭包中的“[weak self]”

我需要在RXSwiftsubscribeNext闭包中使用[weakself]吗?我有代码:searchController.searchBar.rx_text.throttle(0.2,scheduler:MainScheduler.instance).subscribeNext{searchTextinself.viewModel.searchForLocation(searchText)}.addDisposableTo(DisposelBag.sharedDisposelBag.disposeBag)我是否需要修改它以便在闭包的开头有一个[weakself]捕获列表?像这样:s