问题标签 [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.

0 投票
2 回答
546 浏览

ios - 如何将第二个控制器中的文本字段(嵌入在表格单元格中)的字符串传递回第一个控制器中的标签(也嵌入在表格单元格中)?

编辑1:我想我已经找到了问题,我只是无法解决它。在定义 textFieldShouldReturn 的 SecondViewController.m 中,“if ([self.delegate respondsToSelector:@selector(passString:)])”返回 false,因为没有触发 NSLog。

编辑 2:检查谁是两个 ViewController 中的委托人的 NSLogs 可以很好地了解问题。在 FirstViewController 中,prepareForSegue 分配了正确的委托。在转到 SecondViewController 之后,委托变为“null”。

这是我一周来一直试图实现的目标,但没有成功。我明白我需要使用委托将数据传回两层导航堆栈。但是,我不确定为什么我的代码不起作用(字符串没有通过)。

如果有人能告诉我(链接和其他资源)如何正确地制作表单/提交视图(第二个控制器)以用于数据输入,可以重复用于编辑显示视图(第一个控制器)中的特定单元格标签,我将不胜感激)。

这是我的代码:

SecondViewController.h

第二视图控制器.m


第一视图控制器.h

第一视图控制器.m

请检查我的代表路径和电话,看看我所做的是否合适。非常感谢!

0 投票
2 回答
156 浏览

ios - respondsToSelector 在 UIButton 上为“setTitle:”返回 YES,但没有这样的选择器

我正在使用respondsToSelector:,并且大部分时间都可以正常工作。但是有一种情况我得到了错误的结果:

respondsToSelector:setTitle:返回 YES 但UIButton 类中没有选择器。有setTitle:forState:选择器,但这绝对不一样。

那么为什么respondsToSelector:返回YES呢?

0 投票
1 回答
78 浏览

ios - 如何在运行时检查对象是否具有某些特定的 PUBLIC 选择器?

我需要找出某个特定对象是否有某些特定选择器,以及我是否可以调用它。我需要在运行时检查它。我知道respondsToSelector:但不幸的是它也检查类的受保护接口。

我需要检查选择器是否存在以及它是否是公开的。有办法我可以做到吗?

0 投票
4 回答
509 浏览

objective-c - 在 Swift 中为 PubNub 4.0 建立回调以接收消息

在我看来,PubNub 的 Swift 入门文档不适用于 PubNub 4.0 之前的版本。我无法成功建立回调以注册 PubNub。

我的代码:

深入研究 PubNub 源代码,这似乎是有问题的区域:

我对 Swift 和与 Objective C 的集成还比较陌生。我很好奇是否存在问题,respondsToSelector因为 Objective C 代码正在引用 Swift 代码。

消息肯定会通过;PubNub 库中还有另一个较低级别的函数,用于记录收到的所有消息。

任何帮助将非常感激。

0 投票
1 回答
1572 浏览

ios - 为什么delegate.respondsToSelector (Selector ("testEnum:")) 这段代码会在swift语言中返回false?

前几天我是从Objective-C写Swift语言的,在项目中遇到了一个问题。这个问题是在使用respondsToSelector("testEnum:")函数检查是否实现了testEnum:,if的函数时param是这样,它会返回false,我试过其他类型,它会返回true,不知道是什么原因,看下面的代码,帮我解决一下,非常感谢!

0 投票
2 回答
1757 浏览

ios - 在respondsToSelector 检查后doesNotRecognizeSelector 错误

简短描述:doesNotRecognizeSelector在对肯定具有此方法的对象调用方法时出现错误,并且在调用respondsToSelector.

这是一个非常奇怪的情况,我不明白它是怎么回事:)。我在一些用户设备的日志中看到了这个错误,但不是在所有设备上。我无法在自己的设备上重复此操作。

我试图弄清楚它是如何发生的,并增加了条件,respondsToSelector但问题又发生了。

下面的一些代码。希望能帮助到你

1)我viewController反对AppDelegate

2)在其他类中,我试图获取此对象并调用其方法之一。但随叫随到,一切都因错误而[viewController showBanner]失败。doesNotRecognizeSelector

3)AdRootViewController有这个方法,它在接口中声明。

失败的代码字符串是[viewController showBanner].

错误日志如下所示:

PS可能是堆栈跟踪会更好地显示它: 在此处输入图像描述

0 投票
4 回答
698 浏览

swift - 在 Swift3 中,combine responds#to 并一举调用?

例如,

有没有类似..的概念

“???” 意思是“如果它对蓝色有反应,就叫蓝色”......

注意 - 我非常感谢我可以编写一个扩展名callIfResponds:to,或一个特定的扩展名,blueIfBlueable

我想知道这里是否有一些本地的 swiftyness,我不知道。这似乎是一个非常基本的概念。


脚注:

在随后的激烈讨论中,提到了使用协议。只是为了任何阅读的人的利益,这里是使用协议的一种方法:

例如,要使用它...

回到最初的问题,一切都很好。但是您不能“拾取”isHidden现有类中的现有属性(一个简单的例子是 )。

此外,只要我们正在讨论它,请注意,在该示例协议扩展中,不幸的是,您不能自动拥有协议或扩展,因为它是从协议或扩展“内部”调用 unblueAllSiblings 的,原因正是:为什么你做不到

0 投票
4 回答
2216 浏览

ios - App Store 禁止 performSelector 和 respondsToSelector 吗?

我的最新版本已被 Apple 应用商店接受,但几天后我收到了下面引用的通知。

我的应用程序也使用 Rollout.io,我明确询问这是否是问题所在。还没有回应。

如果 respondsToSelector 或 performSelector 被禁止了,有没有替代品?

亲爱的开发者,

您的应用程序、扩展程序和/或链接框架似乎包含明确设计的代码,能够在应用程序审查批准后更改您的应用程序的行为或功能,这不符合 Apple 开发人员计划许可协议和应用程序的第 3.3.2 节商店审查指南 2.5.2。与最初为 App Store 审核时相比,此代码与远程资源相结合,可以促进对应用行为的重大更改。虽然您目前可能没有使用此功能,但它有可能加载私有框架、私有方法并启用未来的功能更改。

这包括任何将任意参数传递给动态方法的代码,例如 dlopen()、dlsym() 、responsToSelector:、 performSelector :、method_exchangeImplementations(),以及运行远程脚本以根据内容更改应用程序行为或调用 SPI下载的脚本。即使远程资源不是故意恶意的,它也很容易被中间人 (MiTM) 攻击劫持,这可能会给应用程序的用户带来严重的安全漏洞。

请对您的应用进行深入审查,并删除任何符合上述功能的代码、框架或 SDK,然后再提交下一个更新供您的应用进行审查。

编辑:苹果论坛提到这一点:https ://forums.developer.apple.com/thread/73640

0 投票
1 回答
182 浏览

swift - Swift 中不区分大小写的“响应选择器”

我从推送通知中获得了一些键和值。然后我想检查键是否是对象的属性,因此我可以相应地映射对象。但我希望能够使用小写键并且对象属性是驼峰式的。

所以问题是如何在 Swift 4 中实现一个不区分大小写的 NSObject 版本:

0 投票
1 回答
144 浏览

objective-c - 在扩展中实现未处理的协议方法

我正在尝试在我的 Cordova 插件中实现一些推送通知方法。Cordova 创建了他们自己的 UIApplicationDelegate,称为 CDVAppDelegate,所以我尝试扩展它并使用 swizzling 添加我的方法。

但是,当我实现一个在 CDVAppDelegate 中未实现的可选协议方法并使用 swizzling 使其可用时,不会调用此新方法。如果我破解 CDVAppDelegate 代码来实现这个方法,新方法就会被调用。

以下是一些代码片段 - 希望这将有助于澄清情况:

在 CDVAppDelegate.h

在 CDVAppDelegate.m

在我的“扩展 CDVAppDelegate {...}”中

如何在不修改 CDVAppDelegate.m 的情况下使其正常工作?