问题标签 [respondstoselector]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - Objective-C:为什么在 respondsToSelector 之前检查 nil:?
我见过这样的代码:
但是,发送一条消息nil
只返回nil
(计算结果为NO
),那么为什么不这样做:
如果 ,前者更快delegate == nil
吗?无论哪种方式,我更喜欢后者,因为它的代码更少。
并且,less
优于more
. 每个 Unix 专业人士都知道这一点。
iphone - Objective-C:如何检查是否支持 C 函数
如何执行运行时检查以查看是否可以使用UIGraphicsBeginImageContextWithOptions
仅从 iOS 4 开始可用的 .
我知道我可以检查[[UIDevice currentDevice] systemVersion]
,但 Apple 建议使用类似NSClassFromString()
or的东西respondsToSelector:
。有respondsToSelector:
for C 函数吗?
objective-c - 如何知道是否在 Objective C 中调用超类方法
子类扩展父类。Parent 实现协议 C,该协议具有可选方法,包括-(void)d
. 孩子有一个实现-d
; 它应该调用[super d]
吗?
换句话说,[super d]
当且仅当某些东西会响应它时,我应该编写什么代码来调用它?假设我不控制 Parent 的实现;它可能随时改变。
这是我想到的所有方法。我目前使用的是 4 号。
显然明智的答案1:
这不起作用,因为 Parent 可能会动态实现 -d 所以当你测试它而不是在现场时它会起作用。或者 Parent 的实现可能会发生变化,因此该测试的结果不再正确。
显然明智的答案2:
这不起作用,因为 NSObject 的 -respondsToSelector 实现会在 Child 中找到实现并在所有情况下都返回 YES。
显然明智的答案3:
当且仅当超类知道它总是实现 -d 时,这才有效;如果实例动态确定此方法是否存在,则此技术将不起作用。比 1 更好,因为它将在运行时获取对 Parent 实现的静态更改。
显然明智的答案4:
如果超类中的方法不存在,则性能很差,因为计算 templateReason 然后将其与异常原因进行比较是昂贵的。
这种机制很脆弱,因为在这种情况下,异常原因字符串的格式可能会在未来的 SDK 或运行时版本中更改。
ios - 检查 CIFilter 在当前 iOS 中可用
我想使用 iOS5 的一些功能,但仍然兼容地为 iOS4 构建,但我遇到了问题。通常我会使用,respondsToSelector:
但我不确定这是否是正确的方法,或者它是否正是我应该插入的。
我正在尝试使用 CIFilter,据我了解,它仅在 iOS5+ 中可用,如何检查它是否在当前安装的操作系统中可用?
提前致谢。
objective-c - Objective C - 动态属性的 respondsToSelector
我目前面临检查对象(NSManagedObject)的属性是否存在的问题。
不幸的是方法
总是返回 NO。
我认为这是因为 CoreData 生成的属性是一种新的样式属性 ala
那么有什么想法可以解决这个问题吗?
我非常感谢您的所有建议;)
提前致谢!亚历克斯
objective-c - 为什么 -respondsToSelector: 实例方法可以用于类名或类对象?
在 Objective C 编程,4e,第 9 章,程序 9.3:
Q1:
既然-respondsToSelector:
是实例方法,而不是类方法,为什么可以Square
直接在类上使用呢?
Q2:
这本书说你可以Square
在这里使用而不是[Square class]
. 它只是一个特殊的捷径,还是这背后有什么机制?
任何帮助将非常感激!提前致谢!
c++ - 如何确定 void * 指针在运行时是指向 Objective-C 对象还是 C++ 对象
我已经搜索了一段时间,但很惊讶没有人提出这个问题,所以我开始了:
我有一个带有 id 参数的 Objective-C 方法。现在我想用respondsToSelector:
它来确定它是否对以下操作有效,如果不是,我有一个备份计划。(这不是ASSERT(0)
:P)
所以,当有人试图搞砸我并通过 时(id)someC++Object
,我当然会遇到很大的崩溃。
我的问题很简单:我可以让一个 C++ 对象respondsToSelector:
安全地失败,以便我可以使用我的备份计划(将编码器打在脸上)吗?
ios - 代表没有回应
我正在尝试在两个 Viewcontroller 之间使用委托,但不幸的是我的委托没有被解雇。我希望有人可以帮助我解决问题。我有一个名为 MapBackgroundViewController 的 ViewContoller 和一个名为 MapsViewController。如果 MapsBackgroundViewController 的 SegmentedControl 发生变化,应通知 MapsViewController。(我实际上尝试在 iPhone 上用 patrial curl 实现类似地图应用的东西)
这是我的代码的一部分:
MapBackgroundViewController.h
MapBackgroundViewController.m
MapsViewController.h
MapsViewController.m(以下方法由于某种原因从未被调用)
objective-c - 使用 respondsToSelector 的性能损失
当 JSON 响应具有无效值时,我将重构许多旧代码,以使客户端对错误的服务器响应和日志异常更加健壮,并且我正在考虑使用 respondsToSelector 检查每个节点的有效性(数据类型)。
我正在检查响应中的数据类型(int、bool 等)
如果 @"feature_enabled" 节点的值不是 0 或 1,则应用程序会崩溃
为了解决这个问题,我会这样做
我没有对此代码进行任何类型的性能分析,但我想知道是否有人可以建议如果我要检查对我打算解析的每个 JSON 响应的选择器的响应,我应该期望什么样的性能损失.
任何指向信息来源的指针表示赞赏!
objective-c - super respondsToSelector:返回 true,但实际上调用 super(选择器)会给出“发送到实例的无法识别的选择器”
好吧,我有点困惑。
我有一个 UIScrollView 的子类,这是我尝试像 UI 元素一样水平滚动的“表格视图”。UIScrollView 本身设置了它在内部使用的 UIGestureRecognizers,并且它似乎将自己设置为那些 UIGestureRecognizers 的委托。我的水平表格元素/单元格上也有我自己的 UIGestureRecognizer 设置,我自己的类设置为我自己的 UIGestureRecognizer 的委托。由于我的类是 UIScrollView 的子类,因此在运行时,UIGestureRecognizer 委托调用会针对 UIScrollView 内置 UIGestureRecognizers 和我自己的 UIGestureRecognizers 进入我的类。有点像 PITA,但我们可以通过传递我们不关心的那些来解决这个问题。
问题是检查[super respondsToSelector:@selector()]
返回YES,但是当我实际调用它时,return [super gestureRecognizer:gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer];
我得到以下异常
2012-08-31 12:02:06.156 MyApp[35875:707]-[MyAppHorizontalImageScrollergestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]: 无法识别的选择器发送到实例 0x21dd50
我原以为它应该显示
-[UIScrollView 手势识别器:shouldRecognizeSimultaneouslyWithGestureRecognizer:]
但这可能没问题。但问题是它说它响应然后没有。
其他两个 UIGestureRecognizer 委托例程使用此代码(显然不同的选择器)。
感谢您的任何见解。