草庐IT

wn-block

全部标签

objective-c - 当我不需要使用完成 block 时,如何在 swift 中声明 NULL/Void?

这是objective-c中的代码:[selfpresentViewController:logInViewControlleranimated:YEScompletion:NULL];到目前为止,我的代码在swift中:self.presentViewController(logInViewController,animated:true,completion:)认为它会像输入“Void”一样简单。不幸的是,还有更多内容。 最佳答案 Apple的预发布文档说:funcpresentViewController(_viewContr

swift - 在 swift3 中使用方法而不是 block 来初始化惰性变量

在swift3文档中。推荐通过以下两种方式使用lazy:1。直接初始化`lazyvarsomeViews:UILabel=UILabel()`2。用block初始化lazyvaroverlayView:UILabel={[unownedself]inletoverlayView=UILabel()overlayView.backgroundColor=self.backgroundColor.withAlphaComponent(0.90)overlayView.font=UIFont.boldSystemFont(ofSize:YFCalendarOverlaySize)overla

swift - 如果我实际上没有在我的完成 block 中引用 self,我应该使用 [weak self] 吗?

当我有一个引用我的类对象属性的完成block时,我使用[weakself]。但是,有时我有一个不引用任何属性的完成block,但类对象可能会消失并取消初始化。我应该使用[weakself]吗?当我这样做时,它通常会发出警告Variable'self'waswrittento,butneverread...doSomeFunction(){[weakself]in//Noreferencestoselfhere} 最佳答案 捕获变量,只有当你在内部使用它时才会发生,默认情况下闭包永远不会捕获变量(不像Java内部类总是捕获this),

ios - 使 getNotificationSettings 返回而不是使用完成 block

我有一个方法用于我正在开发的应用程序的多个位置。这是一种检查远程推送通知是否启用的方法。该方法返回一个值,但您可能知道currentUserNotificationSettings已被弃用,所以现在我正在使用getNotificationSettings。问题是第一个返回一个值,而最新的使用一个block。我仍然希望能够返回一个值以避免重构所有内容,所以我写了以下内容,但它失败了,我不明白为什么......这样可以吗?!publicstaticvarisRemoteEnabled:Bool{varnotificationSettings:UNNotificationSettings?l

swift - 没有 catch block 的 "do statement"是什么意思?

在阅读iOS12编程时,我遇到了几个示例代码,其中包含do语句,没有catchblock,像下面这样:do{letmars=UIImage(named:"Mars")!letsz=mars.sizeletr=UIGraphicsImageRenderer(size:CGSize(sz.width*2,sz.height),format:mars.imageRendererFormat)self.iv1.image=r.image{_inmars.draw(at:CGPoint(0,0))mars.draw(at:CGPoint(sz.width,0))}}//======do{letm

ios - block 是否保证局部变量将在 Swift 中被修改?

funcfoo()->Bool{varapiResult:Bool=falsemyAPI.bar(){(result:Bool)->Voidin//somelogicinblockandlocalvariableassignmentapiResult=result}returnapiResult}apiResult的值是否保证被传入的block更新?(本人是学习iOS的大学生,请大家多多指教) 最佳答案 您正在将闭包(block)传递给myAPI.bar函数。该函数可能会也可能不会调用闭包。如果调用闭包,则apiResult会发生变

string - Swift 是否支持字符串 block ?

Ruby、Python等语言都支持字符串block。如:a='''HelloWorld'''Swift支持字符串block吗? 最佳答案 没有。如Swift编程语言介绍的词法结构中所述,stringliterals包含在一对引号中,并且不得包含换行符。语法规定:string-literal→"quoted-text"quoted-text→quoted-text-itemquoted-textoptquoted-text-item→escaped-characterquoted-text-item→(expression)quote

ios - 如何快速将 void block 传递给 objc_setAssociatedObject

我正在尝试通过扩展向UIView添加点击手势支持。这使用Objective-C非常简单,但是当我尝试在运行时属性上设置void返回block时出现以下错误。error:type'()->Void'doesnotconformtoprotocol'AnyObject'这是计算属性:vartapAction:(()->Void)?{get{objc_getAssociatedObject(self,&AssociatedKeys.SNGLSActionHandlerTapBlockKey)}set{objc_setAssociatedObject(self,&AssociatedKeys.

swift - 从 Spritekit 中的多个 block 创建一个 "smooth"平面

我正在尝试使用Spritekit和Swift编写一个iOS游戏,这是我关于stackoverflow的第一个问题:)为了简化我的问题和我的约束,假设我有两个高度相同的矩形SKShapeNodes(我的关卡),它们完全并排,具有物理实体但非动态。英雄只是一个方形的SKShapeNode,具有动态物理体,可以在这些矩形的顶部移动。玩家使用加速度计移动英雄。我不确定为什么,但有时,当英雄沿着矩形的顶部滑动时,它会立即停在两个矩形之间的缝隙处,或者似乎被这个缝隙绊倒(小跳过去):(((移动应该是平滑的。是否有一种变通方法可以使两个矩形之间的表面更“平坦”/更平滑,因为我知道我不能为了游戏目的而

swift - Firebase 太慢而无法加载基于图 block 的游戏

我正在使用swift和Firebase为iOS构建一个基于2dtile的游戏。因为世界很大,所以我设计了它,以便我只订阅屏幕上的图块。也就是说,我没有为所有10,000x10,000个磁贴添加监听器,而是将它们添加到屏幕上的磁贴中。当玩家移动时,我取消注册旧的监听器并注册新的监听器。我在屏幕边缘添加了一些缓冲区,希望所有内容在屏幕上移动时都能充分加载。不幸的是,Firebase通常有足够大的滞后,以至于这种策略根本不起作用。在次优的互联网连接上,有可能继续走进“未加载的世界”,有时需要几秒钟才能加载丢失的图块。不过,事情就是这样:同一连接和同一设备上的其他MMOiOS游戏运行良好。这不