cocoa - @selector 的语法

标签 cocoa css-selectors foundation nsrange

无需使用NSInvocau即可,假设我有以下代码:

...
array = [NSMutableArray arrayWithObjects:@"Yoda", @"Jedi", @"Darth Vader", @"Darth Vader", @"Darth Vader" , @"Darth Vader", nil];

SEL removeObjectMessage = @selector(removeObject:inRange:);

//does array allow us to remove and object in a range? if so let's do this    
if ([array respondsToSelector:removeObjectMessage]){   
    NSRange darthVaderRange=NSMakeRange(2, 3);
    [array removeObject:@"Darth Vader"inRange:darthVaderRange];
}

我将如何以 SEL removeObjectMessage 的形式执行最后一行?我必须在范围周围放一个 wrapper 吗?我只是想看看所有这些困惑的语法看起来如何......

最佳答案

你可以这样做:

if ([array respondsToSelector:removeObjectMessage]){   
    NSRange darthVaderRange=NSMakeRange(2, 3);
    objc_msgSend(array, removeObjectMessage, @"Darth Vader", darthVaderRange);
}

虽然这看起来很脆弱......

关于cocoa - @selector 的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6497300/

相关文章:

cocoa - 有 NSResponder 委托(delegate)这样的东西吗?

objective-c - xib 中的预处理器指令?

css - CSS中可以单独使用伪元素吗?

properties - 如何基于 NSString 类型键测试属性存在和类型?

css - 如何选择最后一个元素?

swift - 将字典转换为 Base64 : error Segmentation fault 11

objective-c - 有没有办法强制 CoreImage 使用 GPU?

macos - 如何显示我的应用程序不是键盘记录程序?

iphone - 如何用 nsarray 初始化 nsmutablearray

objective-c - NSDictionary +dictionaryWithDictionary 还是-copy?