首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SWIFT2.0,闭包=函数()

SWIFT2.0,闭包=函数()
EN

Stack Overflow用户
提问于 2015-09-08 15:46:30
回答 1查看 187关注 0票数 1

嘿,我有个问题,我好像搞不懂

我有封闭型

代码语言:javascript
复制
public typealias VoidCompletionHandler = ()->Void

然后创建一个可选变量。

代码语言:javascript
复制
var favouritePropertyStateHandler:VoidCompletionHandler?

然后我称之为

代码语言:javascript
复制
self.favouriteCellStateHandler?()

一切都很好

代码语言:javascript
复制
self.propertyModel?.favouritePropertyStateHandler = { self.favouriteStateChanged() }

完全符合功能类型

代码语言:javascript
复制
func favouriteStateChanged()->Void

但为什么我不能

代码语言:javascript
复制
self.propertyModel?.favouritePropertyStateHandler = self.favouriteStateChanged()

类型匹配-两者都是?

代码语言:javascript
复制
()->Void  

我得到的错误是

代码语言:javascript
复制
Cannot assign a value of type 'Void' ('aka '()') to a value of type 'VoidCopletionHanlder?'

解决了

代码语言:javascript
复制
self.propertyModel?.favouritePropertyStateHandler = self.favouriteStateChanged

然而这又造成了另一个问题,我怎么不会造成永恒的保留周期呢?如果我想让自己变得软弱?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-08 15:50:14

您正在分配来自self.favouriteStateChanged()的结果,而不是函数本身。试一试

代码语言:javascript
复制
self.propertyModel?.favouritePropertyStateHandler = self.favouriteStateChanged

而不是。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32462064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档