首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法识别的选择器发送到实例UIViewController

无法识别的选择器发送到实例UIViewController,这个错误提示意味着在应用程序中尝试使用选择器(如UIViewController)向实例发送消息时,选定的实例(如UIViewController)无法被识别。这通常是因为实例化过程存在问题,或者与当前代码中其他已实例化的对象存在冲突。

要解决这个问题,可以尝试以下几种方法:

  1. 确保选定的实例是当前代码中唯一实例,即其他对象不能使用相同的标识符。
  2. 确保选定的实例已经被正确初始化,例如在UIViewController的实例化过程中,需要先调用super的初始化方法,然后再使用选择器发送消息。
  3. 检查当前代码中是否存在其他对象与选定的实例冲突,例如在多个地方使用相同的标识符或引用同一个对象。
  4. 如果以上方法都无法解决问题,可以尝试使用其他选择器方法来发送消息,或者使用其他方式来实现应用程序的功能。

需要注意的是,选择器是一种非常强大的工具,但使用不当可能会导致程序出现难以预料的问题。因此,在使用选择器时,需要谨慎考虑,确保选定的实例是当前代码中唯一实例,并且与当前代码中其他已实例化的对象不存在冲突。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS开发·runtime原理与实践: 消息转发篇(Message Forwarding) (消息机制,方法未实现+API不兼容奔溃,模拟多继承)

选择器:表示消息或方法名称的一种特殊方式,表示为类型SEL。选择器本质上就是不透明的字符串,它们被管理,因此可以使用简单的指针相等来比较它们,从而提高速度。...换句话说,无论何时发送未知消息,它​​都会以一个很好的包发送到您的代码中,此时您可以随心所欲地执行任何操作。 1.3 OC的方法本质 OC中的方法默认被隐藏了两个参数:self和_cmd。...鲜为人知的隐式参数_cmd(它保存了正在发送的消息的选择器)是第二个这样的隐式参数。总之,self指向对象本身,_cmd指向方法本身。...当一个对象由于没有相应的方法实现而无法响应某个消息时,运行时系统将通过forwardInvocation:消息通知该对象。...self.view setBackgroundColor:[UIColor whiteColor]]; self.title = @"Test2ViewController"; //实例化一个

2K11

VCTransitionsLibrary –自定义iOS交互式转场动画的库

UIViewControllerTransitioningDelegate协议, UINavigationControllerDelegate协议和 UITabBarControllerDelegate 协议提供的系统级别的支持...模态控制器消失时的交互 UIViewControllerTransitioningDelegate 协议,也用来提供对交互式转场的支持.下面是一个结合清扫手势和翻页动画的例子: //实例变量,通常在你的初始化方法初始化它们...sourceController:(UIViewController *)source { // 允许交互控制器绑定它的手势识别器....interactionController : nil; } 出栈时的交互 UINavigationControllerDelegate 也有方法为交互式转场提供支持.一个典型的类似于上上面代码的模式: // 实例变量...= [CEFoldAnimationController new]; _animationController.folds = 3; // 使用观察者模式监测被选中的选择器的变化情况

1.6K60
  • 基础篇-UIApplication、UIWindow以及程序的启动流程看我就够了

    前言 这篇文章主要介绍下有关UIApplication、UIWindow以及程序的启动流程,通过这篇文章,相信你会更加理解iOS 的应用启动过程以及app应用级别的相关知识。...此外,UIApplication实例还维护一个在本应用中打开的window列表(UIWindow实例),这样它就可以接触应用中的任何一个UIView对象。...5.利用UIApplication对象,能进行一些应用级别的操作....) iOS 中的状态栏设置(iOS9 中跟状态栏有关的已经过期,状态栏交给控制器UIViewController管理了) 应用界别的跳转 (openURL) 一 、设置应用程序图标右上角的红色提醒数字(...applicationWillEnterForeground:(UIApplication *)application # 应用程序即将被销毁的时候会调用该方法 #注意:如果应用程序处于挂起状态的时候无法调用该方法

    1.6K20

    iOS 组件化-路由解耦思想 JLRoutes 实战篇(一)App内控制器跳转

    内每个控制器可以想象成已经连接了这台路由器的不同设备, 当然连接路由器时, 一般需要输入密码, Router 同样的, 使用前需要每台设备进行一次注册, Router 在内部保存每台设备的 URL, 不同设备之间需要交互时, 将消息发送到路由器中统一处理...; 当控制器之间需要交互跳转时, 只需要将对应的 URL 地址发送到 Router 里, Router 根据其注册的 URL 来寻址到对方信息, 然后负责实例化对象, 并传参, 进行跳转等工作, 各个控制器之间不需要相互依赖对方...关于控制器跳转 : 在触发 Router 时, 我们能拿到 Router 映射到的 Map, 获取到其 Class, 在通过 Class 来进行初始初始化实例, 这里通过对 UIViewController...[vc isKindOfClass:[UIViewController class]]) { vc = nil; } #if DEBUG //vc不是UIViewController...*)vc parameters:(NSDictionary *)parameters { ​ UIViewController* currentVC = [UIViewController jsd_findVisibleViewController

    1.5K20

    转的两种读音区分_category怎么读

    (2)可以执行希望向其添加类别的类以及类别的名称,还可以列出添加的方法 不可以添加新的实例变量,类别生命中没有实例变量部分。...有两方面局限性: (1)无法向类中添加新的实例变量,类别没有位置容纳实例变量。...类别方法将完全取代初始方法从而无法再使用初始方法。...无法添加实例变量的局限可以使用字典对象解决 4、类别的作用 类别主要有3个作用: (1)将类的实现分散到多个不同文件或多个不同框架中。...选择器可以被传递,可以作为方法的参数使用,甚至可以作为实例变量存储 小结 类别提供了向现有类添加新方法的手段,即使没有这些类的源代码 类别可以将对象的实现分散到多个不同的源文件、甚至多个不同的框架中

    54440

    Objective-C Runtime编程指南(1)

    数据结构捕获类和类别定义以及协议声明中的信息; 它们包括Objective-C编程语言中定义类和协议以及方法选择器实例变量模板和从源代码中提取的其他信息中讨论的类和协议对象。...该表具有将方法selector与其识别的方法的类特定地址相关联的条目。...虽然这些参数没有明确的声明,但源代码仍然可以引用它们(就像它可以引用接收对象的实例变量一样)。 一个方法将接收对象称为self,并将其作为_cmd自己的选择器。...您可以实现resolveInstanceMethod:和resolveClassMethod方法分别为实例和类方法的给定选择器动态提供实现。...forwardInvocation:方法可以充当无法别的消息的分发中心,将其分发给不同的接收者。 或者它可以是一个中转站,将所有信息发送到同一个目的地。

    80720

    微信AI从物到通用图像搜索的探索揭秘

    作者:lincolnlin,腾讯 WXG 专家研究员 微信物是一款主打物品识别的 AI 产品,通过相机拍摄物品,更高效、更智能地获取信息。...电商场景:我们要识别的集合是无限大的,而且还是动态的。所以我们是通过动态图像召回。从召回的结果上推断出商品的具体款式。 动植物汽车这种场景:集合是相对固定的。而且需要一些专业的数据库。...首先我们基于运动估计中的光流追踪方法,先判断用户手机是否处于静止状态,如果已经静止则会从 camera 的图片序列中,根据图像梯度的方法,选出较为清晰的帧,再用深度模型进行主体检测,如果检测到有物品,进行裁剪后再发送到后台...前面提到服务端的检测是带有类别的,比如图中输出鞋子,那么我们就走鞋子的专用检索模型提取特征,再到鞋子库中检索。这是最朴素的版本。...检索篇 | 通用以图搜图之无监督的分库 上面提到的是物的检索方案实现,回到通用的以图搜图场景,我们无法简单的把图片定义成 N 个库出来,所以我们用了无监督的分库方法。

    3.4K30

    iOS横竖屏切换

    横竖屏切换实例 竖屏界面如何present横屏界面 竖屏present横屏是很普遍的场景,比如说视频播放场景的全屏切换,就可以在当前竖屏的界面present一个横屏播放界面的方式,实现横竖屏切换。...横屏竖切换机制分析 前面的实例介绍了如何支持切换,但是也产生一些疑问: 工程配置文件也没有设置横屏,为什么后面就能支持横屏?...仅仅知道切换适配代码,是无法形成横竖屏切换理解,也就很难回答上述的问题。 由于没有找到解释横竖屏切换机制的官方文档,以下根据自己的经验对这个切换的机制进行分析。...App启动前 在App启动前进程还未加载,代码无法运行,系统肯定无法通过AppDelegate或者UIViewController这种代码的方式获取横竖屏的配置。...假如只在UIWindow返回界面朝向也是允许的,就如同上面的实例分析中的push横屏。

    2.6K20

    消息转发

    动态方法解析 这是消息转发的第一步.在这一步骤中,运行时希望能够获得一个方法实现来正确处理这个异常的消息.这里只需要提供一个方法实现就行了,方法的实现主体还在当前对象,处理还在当前类中进行解决.针对类方法和实例方法...self, sel, (IMP)dealException, "@@:"); return true; } @end 不过之所以是异常,那就出现了我们未能及时考虑到的情况,所以这种针对特定方法方法选择器动态添加方法实现的情况在实际开发中...isa指针的指向. 1.3 完整转发(Normal Forwarding) 这是消息转发的第三步,执行这个方法说明之前的时机都未能正常处理异常.而在这个时机中,系统会把现有的异常消息的所有细节(例如方法选择器...系统利用这两个函数做了许多事,我们如果想要用这两个函数来处理异常就需要把这些处理全部隔离掉,然后处理捕获我们自定义的异常.但是看得出来,想要完全隔离这些类和方法并不容易,而且很难确保以后在新的操作系统版本中不会增加别的方法...但是,但是,但是,其实我们只是拦截了实例方法未实现导致的异常,如果是类方法未实现导致的异常,怎么处理呢?

    1.7K20

    JSPatch 实现原理详解

    调用类方法过程是这样,那实例方法呢?UIView.alloc() 会返回一个 UIView 实例对象给 JS,这个 OC 实例对象在 JS 是怎样表示的?...怎样可以在 JS 拿到这个实例对象后可以直接调用它的实例方法 UIView.alloc().init()?...对于这个对象生命周期的管理,按我的理解如果JS有变量引用时,这个 OC 对象引用计数就加1 ,JS 变量的引用释放了就减1,如果 OC 上没别的持有者,这个OC对象的生命周期就跟着 JS 走了,会在 JS...OC,就完成了实例方法的调用。...实际上这个self是个全局变量,在 defineClass 里对实例方法 方法进行了包装,在调用实例方法之前,会把全局变量 self 设为当前对象,调用完后设回空,就可以在执行实例方法的过程中使用 self

    3.5K80

    【小程序】组件通信

    属性绑定 属性绑定用于实现父向子传值,而且只能传递普通类型的数据,无法将方法传递给子组件。父组件 的示例代码如下: 子组件在 properties 节点中声明对应的属性并使用。...中,通过自定义事件的形式,将步骤 1 中定义的函数引用,传递给子组件 在子组件的 js 中,通过调用 this.triggerEvent('自定义事件名称', { /* 参数对象 */ }) ,将数据发送到...步骤3:在子组件的 js 中,通过调用 this.triggerEvent(‘自定义事件名称’, { /* 参数对象 */ }) ,将数 据发送到父组件。 ...获取组件实例 可在父组件里调用 this.selectComponent("id或class选择器") ,获取子组件的实例对象,从而直接 访问子组件的任意数据和方法。...调用时需要传入一个选择器,例如 this.selectComponent(".my- component")。  自定义组件 - behaviors 1.

    1.7K10

    【IOS开发高级系列】Objective-c Runtime专题总结

    每个方法名都对应一个 SEL 类型的方法选择器,而每个实例对象中的SEL 对应的方法实现肯定是唯一的,通过一组 id 和 SEL 参数就能确定唯一的方法实现地址;反之亦然。...NSObject 类中有个 methodForSelector: 实例方法,你可以用它来获取某个方法选择器对应的IMP,举个栗子: void (*setter) (id, SEL, BOOL); int...当一个对象由于没有相应的方法实现而无法响应某消息时,运行时系统将通过forwardInvocation: 消息通知该对象。...forwardInvocation: 方法就像一个不能识别的消息的分发中心,将这些消息转发给不同接收对象。或者它也可以象一个运输站将所有的消息都发送给同一个接收对象。...注意: forwardInvocation: 方法只有在消息接收对象中无法正常响应消息时才会被调用。

    37130

    Objc Runtime 总结

    const char * sel_getName ( SEL sel ); // 在objectivec Runtime系统中注册一个方法,将方法名映射到一个选择器,并返回这个选择器 SEL sel_registerName...Method中的接收消息对象参数和方法选择器参数 在Method中使用self关键字来引用实例本身,self的内容即接收消息的对象是在Method运行时被传入的同时还有方法选择器。...+ ) setter(targetList[i], @selector(setFilled:), YES); Method转发 如果使用[object message]调用方法,object无法响应...注意的是forwardInvocation:方法只有在消息接收对象无法正常响应消息时才被调用。...前面的消息转发很强大,但是需要能够修改对应类的源码,但是对于有些类无法修改其源码时又要更改其方法实现时可以使用Method Swizzling,通过重新映射方法来达到目的,但是跟消息转发比起来调试会困难

    75620

    Objective-C Runtime详解

    每个方法名都对应一个SEL类型的方法选择器,而每个实例对象中的SEL对应的方法实现肯定是唯一的,通过一组id和SEL参数就能确定唯一的方法实现地址。...NSObject类中有个methodForSelector:实例方法,你可以用它来获取某个方法选择器对应的 IMP ,举个栗子: void (*imp)(id, SEL, BOOL);//定义一个函数指针...forwardInvocation: 方法就像一个不能识别的消息的分发中心,将这些消息转发给不同接收对象。或者它也可以象一个运输站将所有的消息都发送给同一个接收对象。...注意: forwardInvocation: 方法只有在消息接收对象中无法正常响应消息时才会被调用。...当我们无法触碰到某个类的源代码,却想更改这个类某个方法的实现时,该怎么办呢?可能继承类并重写方法是一种想法,但是有时无法达到目的。

    1.7K60
    领券