我最近学习了块,我写了一个返回块的函数,就像Masonry一样,
- (UIButton *(^)(NSString *title, UIControlState state))nj_buttonTitle {
return ^UIButton *(NSString *title, UIControlState state) {
[self setTitle:title forState:state];
return self;
};
}
然后,我可以在没有警告的情况下使用点表示法调用此方法。
UIButton *b = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
b.nj_buttonTitle(@"hello", UIControlStateNormal);
我也写了这样的方法
- (void)nj_print {
NSLog(@"nj_print");
}
警告Property access result unused-getters should not be used for side effects
,而我称这种方法使用点符号b.nj_print
;
我猜是因为nj_buttonTitle
返回一个块,我使用这个块,所以没有警告?
答案 0 :(得分:0)
您的猜测是正确的 - nj_buttonTitle
方法返回块,您的代码会立即调用它,因此在第一种情况下没有警告。
在第二种情况下,对于具有void返回类型的方法,您使用点语法。 Dot语法应该只用于Objective-C中的属性,因此编译器会警告您使用不正确。