iOS 捕获未知方法的调用,避勉抛出异常

iOS 捕获未知方法的调用,避勉抛出异常

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

NSObject 对象是 Objecitve-C 中的根类,其有以下两个方法,在调用 NSObject 及其子类的方法不存在时,会将这个调用封装成 NSInvocation *
类型,试图传递给 forwardInvocation: 方法,如果原方法调用的对象重载了forwardInvocation: 方法,forwardInvocation: 方法就会被调用。

forwardingTargetForSelector: 的真正用途,从官网的描述中,还是未完全体会其可用的场景,只是后一方法在做反射处理时到时用到过,参见 “iOS
实现的 json 数据源的 O-R Mapping
”。

forwardingTargetForSelector:

返回未知消息首先应该转向的对象。
Returns the object to which unrecognized messages should first be directed.

- (id)forwardingTargetForSelector:(SEL)aSelector

forwardInvocation:

由子类重载,用于前转消息到其它对象。
Overridden by subclasses to forward messages to other objects.

- (void)forwardInvocation:(NSInvocation *)anInvocation

- (void)forwardInvocation:(NSInvocation *)invocation {

    SEL orignalSelector = [invocation selector];

    if ([friend respondsToSelector:orignalSelector]) {

        [invocation invokeWithTarget:friend];
    }

    else {

        [super forwardInvocation:invocation];
    }
}
时间: 2024-08-30 03:26:07

iOS 捕获未知方法的调用,避勉抛出异常的相关文章

ios-关于IOS协议代理方法自动调用问题?

问题描述 关于IOS协议代理方法自动调用问题? 各位大牛好, 想问一个关于IOS协议代理的问题: 是否通过遵守某个协议,实现了其中的方法,对于这些方法来说,大多数情况下是 视图对象对其进行自动调用的吗? 例如:当表格不知道自己的行高,就去找实现了相关方法的代理?找它实现的相关方法 来自动获得行高? 小弟不太理解代理与协议方面的知识,希望可以有大牛解答,谢谢. 解决方案 你理解的不错,的确是这样,但是少了一步.除了遵守协议,实现方法之外,还要把自身设置成被委托对象.....delegate =se

Android实现捕获未知异常并提交给服务器的方法_Android

本文实例讲述了Android实现捕获未知异常并提交给服务器的方法.分享给大家供大家参考,具体如下: 在Android应用中,即便应用已经投放市场,但有时也会遇到一些未知的异常,此时如果能够获得用户的反馈信息,那么对于我们应用的开发是一个很好的帮助 为了实现这样的效果,我们需要做如下工作 写一个类实现UncaughtExceptionHandler接口,重写uncaughtException方法 功能描述:当应用出现了未知异常,应用强制退出,应用再次启动时,提示用户是否将错误信息反馈给开发者 pu

Android实现捕获未知异常并提交给服务器的方法

本文实例讲述了Android实现捕获未知异常并提交给服务器的方法.分享给大家供大家参考,具体如下: 在Android应用中,即便应用已经投放市场,但有时也会遇到一些未知的异常,此时如果能够获得用户的反馈信息,那么对于我们应用的开发是一个很好的帮助 为了实现这样的效果,我们需要做如下工作 写一个类实现UncaughtExceptionHandler接口,重写uncaughtException方法 功能描述:当应用出现了未知异常,应用强制退出,应用再次启动时,提示用户是否将错误信息反馈给开发者 pu

iOS开发之用javascript调用oc方法而非url_IOS

先来看看如何在项目中的webview上面点击一个按钮,就能达到调用oc代码 上面的这个页面是webview里面嵌套的一个项目的网页,打印订单点击之后(点击事件是一个js方法),需要调用oc里面集成好的蓝牙打印机功能,来完成打印. 所以这里只能用js代码来直接调用oc代码. 1.首先创建一个iOS类,因为这里一般都需要安卓端做一套,iOS端做一套,所以一般这样命名以示区别 .h #import <Foundation/Foundation.h> #import <JavaScriptCor

iOS中UITextView方法解读

iOS中UITextView方法解读 常用属性解读: @property(nonatomic,assign) id<UITextViewDelegate> delegate; 设置代理属性 @property(nonatomic,copy) NSString *text; textView上的文本 @property(nonatomic,retain) UIFont *font; 设置文本字体 @property(nonatomic,retain) UIColor *textColor; 设置

iTunes升级iOS出现未知错误3004解决办法

部分用户在使用iTunes给iOS设备进行升级操作的时候可能会遇到一些错代码,那么iTunes升级iOS出现未知错误3004该怎么办呢?小编下面就给大家带来iTunes升级iOS出现未知错误3004解决方法. 问题描述: 多见于在iTunes升级或自己下载固件升级iOS系统时,有时会报错"发生未知错误(3004)" 原因分析: 出现3000范围系列的错误代码,通常表示 iTunes 无法通过端口 80 或 443 联系 gs.apple.com 服务器.这可能是由于受到过期或配置不正确

iOS 捕获系统外异常

iOS 捕获系统外异常 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 有时应用崩溃,而日志中的输出信息太少,无法定位问题,这是最头疼的事情,尤其很累的时侯,已经想不起来刚才改过什么了,这就叫做

关于在同控制器中方法中调用没有权限的方法的提问

问题描述 关于在同控制器中方法中调用没有权限的方法的提问 Index 控制器中,我写了一个有权限的A方法,然后我又写了一个我没有权限B方法,当我在A方法中用 $this->B(); 时,居然在A方法中能够接收到 B中 return 出来的值 跪求解答 解决方案 YII 如何在控制器里调用 model 方法YII 如何在控制器里调用 model 方法

Cisco IOS的故障恢复方法

IOS是路由器交换机设备的核心,IOS全称internet operate system,中文是网络操作系统的意思.他就好比计算机的操作系统windows一样,虽然是软件但出现问题就无法进行任何软件的运行了.所以如果IOS出现问题的话路由交换设备将无法正常运行,配置命令都将荡然无存.我们只能通过重新安装IOS来解决. 本文以cisco 3550为例介绍IOS的恢复方法: 第一步:用控制线连接交换机console口与计算机串口1,用带有xmodem功能的终端软件连接(微软操作系统自带的超级终端软件