簡體   English   中英

如何通過目標 C 中的 @selector function 傳遞參數?

[英]How to pass a parameter by a @selector function in Objective C?

- (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:方法中的處理程序,當我按照代碼顯示時發現它不是 nil 如果沒有,我如何將 nil 值傳遞給test:方法。

我不想使用perform:方法,或者在網上搜索后包裝一個 mew 方法。

在 initWithMessageTitle 實現中使用帶參數初始化的 NSInvocation,然后調用。

- (instancetype)initWithMessageTitle:(NSString *)message infoText:(NSString *)info btnTitle:(NSString *)title target:(id)target action:(SEL)action secondBtnTitle:(NSString *)secondTitle target:(id)secondTarget action:(SEL)secondAction
{
     NSMethodSignature *sig = [[target class] instanceMethodSignatureForSelector:action];
     NSInvocation* invoc = [NSInvocation invocationWithMethodSignature:sig];
     //[invoc setArgument: atIndex:2];
     invoc.selector = action;
     [invoc invokeWithTarget:target];
}

填充它並調用受 Cy-4AH 啟發的調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM