【问题标题】:Block property with parameters and setter带有参数和设置器的块属性
【发布时间】:2014-12-15 11:24:10
【问题描述】:
我有一个带有 setter 的块:
@property (nonatomic, copy) void (^action)(UIControlEvents);
- (void)setAction:(void (^)(UIControlEvents))action {
// ?
}
我必须使用 setter 并且没有跳过它的选项。
如何访问 UIControlEvents 参数..?
【问题讨论】:
标签:
objective-c
objective-c-blocks
【解决方案1】:
你可以像这样填写你的setter来设置你的block属性:
- (void)setAction:(void (^)(UIControlEvents))action {
_action = action;
}
但是,您将无法按照您的要求访问任何特定的 UIControlEvents 参数,因为您是提供它的人。 action 块将 UIControlEvents 值作为参数,因此它不会出现在块中。使用 UIControlEvents 参数调用操作块可能如下所示:
- (void)handleControlEvents:(UIControlEvents)events {
if (self.action) self.action(events)
}