gpt4 book ai didi

objective-c - 如何将 NSNumber 传递给需要 bool 值的方法?

转载 作者:太空狗 更新时间:2023-10-30 03:43:08 26 4
gpt4 key购买 nike

[[self.view.window subviews] makeObjectsPerformSelector:@selector(setUserInteractionEnabled:) withObject:[NSNumber numberWithBool:NO]];

我在另一个问题的答案 ( How to disable touch input to all views except the top-most view? ) 中看到了这段代码,当它起作用时它让我感到惊讶,因为 setUserInteractionEnabled: 需要一个 BOOL(因为它不是 objective-c 对象不能在 performSelector:withObject: 类型方法中传递)。

说明传递 NSNumber 可以的文档在哪里?它适用于所有方法,还是需要特殊的实现?它只适用于 BOOL,还是可以使用 int 之类的类型来完成?

最佳答案

如果您只想让您的代码正常工作,请点赞并接受 Paul.s 的回答。如果您想阅读有关 Nerd 进行实验的信息,请继续。在对我的原始答案的评论中有一些有趣的讨论,我总结如下。

这是行不通的。我在 iOS 项目中尝试过,userInteractionEnabled 属性不受发送 performSelector:withObject: 的影响。这与 documentation 匹配为了NSObject 声明:

aSelector should identify a method that takes a single argument of type id. For methods with other argument types and return values, use NSInvocation.

现在的传奇Peter Hosey构建了一个示例基础工具 here当您将 double 传递给它时,这非常有效,我自己也发现它也是一个 float 。

好奇上加好奇,这在 iOS 项目(double 或 float)中不起作用。

总而言之,我认为我们可以说以下几点:

  • 如果它曾经起作用,那它是偶然起作用的,不应依赖
  • 关于堆栈溢出的已接受或赞成的答案不一定正确

关于objective-c - 如何将 NSNumber 传递给需要 bool 值的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8695810/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com