【发布时间】:2021-03-28 17:06:38
【问题描述】:
- (IBAction)alertShow:(NSButton *)sender {
MHAlert* alert = [[MHAlert alloc]initWithMessageTitle:@"message" infoText:@"infoText" btnTitle:@"OK" target:self action:@selector(test:) secondBtnTitle:nil target:nil action:nil];
[alert runModal];
}
- (void)test:(void(^)(BOOL isSuccess))handler
{
if (handler) {
handler(YES);
}
else
{
handler(NO);
}
}
我想通过@selector(test:)传递一个参数,那就是块类型参数, 我检查了 test: 方法中的处理程序,当我按照代码显示进行操作时,发现它不是 not nil。 如果没有,我如何将 nil 值传递给 test: 方法。
我不想使用perform:方法,或者网上搜索后包装一个mew方法。
【问题讨论】:
-
什么是
MHAlert?它是否使用参数调用提供的选择器?您不能在initWithMessageTitle调用中传递参数;@selector不是这样工作的。 -
您可以使用
NSInvocation。填写并致电invoke -
你能解释一下为什么你不想使用
perform:withObject:吗? -
您可以将 block 参数转换为
id并完全按照 @hacker_1989 所示的示例进行传递。
标签: ios objective-c macos cocoa cocoa-touch