提问人:Aviav Sabag 提问时间:1/19/2021 更新时间:1/19/2021 访问量:1118
Objective-C 中的闭包(Swift)到闭包(块?
Closures(Swift) to closures(blocks?) in Objective-C
问:
嗨,大家好,我是 Objective-C 的新手,我有一个小代码,我想把它从 Swift -> Objective-C 转换过来。我有一个变量,它是一个闭包,但不确定如何在 Objective-C 中做到这一点 变量如下:
var didTimerFire: ((UICollectionViewCell) -> Void)?
目标C中还有“自我”吗?很抱歉我是个菜鸟,但对 Objective-C 来说又有点陌生:)
答:
2赞
Grzegorz Krukowski
1/19/2021
#1
在 Objective-C 中,有:Blocks
如果你想把它们用作属性,它就像:
@property (nonatomic, copy, nullability) returnType (^blockName)(parameterTypes);
或作为方法参数:
- (void)method:(returnType (^nullability)(parameterTypes))blockName;
因此,对于您的示例,它将是这样的:
@property (nonatomic, copy, nullable) void (^didTimerFire)(UICollectionViewCell);
评论
0赞
Aviav Sabag
1/19/2021
知道你:)顺便说一句,Objective-C 中是否有像 Swift 那样的“自我”?:)
4赞
Duncan C
1/19/2021
我写了很多 Objective-C,但我从来没有记住过可怕的块语法。指定属性、方法参数和块类型的方式各不相同且不直观。我收藏了一个链接,叫做 fuckingblocksyntax.com。我建议参考这一点。
0赞
Aviav Sabag
1/19/2021
@Grzegorz Krukowski 顺便说一句,如何在 objective-c 中这样使用它:cell.didTimerFire = { [弱自我] 守卫中的单元格 let self = self else { return } self.impressionEventStalker?。stalkCells() } 类似完成处理程序
0赞
Duncan C
1/19/2021
我似乎记得有一个 G 级版本的页面,内容完全相同。鉴于它的名字不合时宜,我犹豫是否要链接它,但它确实抓住了我(和其他人,显然)对 Objective-C 块语法的感受。
评论