【代码笔记】iOS-performSelector
2024-10-02 02:15:21
代码:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view. self.title=@"performSelector"; //performSelector是运行时系统负责去找函数/方法的,在编译时候不做任何校验;但是直接调用肯定在编译是会校验。如果函数不存在,那么直接调用 在编译时候就能够发现(借助Xcode可以写完就发现),但是使用performSelector的话一定是在运行时候才能发现(此时程序崩溃)
//Cocoa支持在运行时 向某个类添加方法(应该极少人用到, 即方法编译时不存在,但是运行时候存在,这时候必然需要使用performSelector去调用) /*直接调用方法时候,一定要在头文件中声明该方法,使用时候,也要将头文件import进来 而使用performSelector时候, 可以不用import头文件,对包含方法的 对象 调用performSelector即可*/ // 没有参数
BOOL isNoParam= [self respondsToSelector:@selector(methodNoParam)];
if (isNoParam) {
[self performSelector:@selector(methodNoParam)];
} // 一个参数
BOOL isOneParam= [self respondsToSelector:@selector(methodWithOneParam:)];
if (isOneParam) {
[self performSelector:@selector(methodWithOneParam:) withObject:@"firsht"];
} // 二个参数
BOOL isParams= [self respondsToSelector:@selector(methodWithParams: andParamSecond:)];
if (isParams) {
[self performSelector:@selector(methodWithParams: andParamSecond:) withObject:@"first" withObject:@"second"];
} }
#pragma -mark -perform
- (void)methodNoParam{
NSLog(@"methodNoParam");
} - (void)methodWithOneParam:(id)paramFirst{
NSLog(@"methodWithOneParam: %@", paramFirst); } - (void)methodWithParams:(id)paramFirst andParamSecond:(id) paramSecond{
NSLog(@"methodWithOneParam: %@,%@", paramFirst,paramSecond); }
最新文章
- FlashFXP(强大的FXP/ftp上传工具)V5.0.0.3722简体中文特别版
- redis+Keepalived主从热备秒级切换
- python os&;shutil 文件操作
- MySQL在一台db服务器上面如何启动多个实例 (转)
- Maven 的41种骨架
- PHP实现下载功能之流程分析
- Android开发初始
- python中基于descriptor的一些概念
- UVA 10806 Dijkstra, Dijkstra.(费用流)
- iOS 设置UIDatePiicer为24小时制
- Android使用Apache的httpmime包post提交数据
- ActiveMQ入门练习
- SQL Server 扩展事件(Extented Events)从入门到进阶(2)——在GUI中创建基础扩展事件
- 一次ES故障排查过程
- ABB机器人设置安全区(案例版)
- idea: Unable to parse template ";class";
- MVC5+EF6入门教程——实现动态创建数据库与登录验证
- ES系列十三、Elasticsearch Suggester API(自动补全)
- tar -zxvf中的z是个什么鬼
- SAS ODS GRAPHICS SGPLOT 画图 指存放定路径、名称、指定格式