35.NSString 与 Class/Protocol/SEL 相互转化
2016-02-24 17:51
211 查看
简述
在开发中, 我们有时候视图用字符串来替代Calss 或者protoclo 或者SEL 的情况, 因为这样会更加灵活和方便。今天就来看一看,这是它们之间是怎么样相互转化的。//NSString 与 Class 相互转化 Class NSClassFromString (NSString *aClassName); NSString * NSStringFromClass (Class aClass); //NSString 与 Protocol 相互转化 NSString * NSStringFromProtocol (Protocol *proto); Protocol *NSProtocolFromString (NSString *namestr); //NSString 与 SEL 相互转化 NSString *NSStringFromSelector (SEL aSelector); SEL NSSelectorFromString (NSString *aSelectorName);
例子
我曾经遇到过,在一个页面中可以有9个选择去push 出不同的页面。这样的情况下,如果每个控制器的 push 我都要按照如下代码来写,这岂不是要累死自己, 所以我找了找一个简单的方法。RegisterViewController *registerVC = [[RegisterViewController alloc] init]; [self.navigationController pushViewController:registerVC animated:YES]; //
就是利用了NSString 与 Class 的转化:
//将所有控制器类的字符串放入数组 array中 NSArray *arry = [NSArray arrayWithObjects:@"WantToLoanViewController",@"WantToSaleBusinessViewController",@"GetBusinessEverydayViewController",@"LoanGroupViewController",@"PledgeGroupViewController",@"CooperationViewController",@"ReconmmendForMeViewController",@"ActivityAnnouncementsViewController",@"ContactUsViewController", nil]; //取对应类名 NSString *className = [array objectAtIndex:indexPath.row]; Class Representative = NSClassFromString(className); //创建 Controller 并 push UIViewController *VC = [[Representative alloc] init]; [self.navigationController pushViewController:VC animated:YES];
总结:
当然,我这里只是举个例子, 不同情境下需要用到的方法也不一定相同, 所以还NSString 与 Protocol/SEL 的相互转化,这里就不一一举例了。相关文章推荐
- mysql开启错误日志!!!
- 2016寒假训练——树状数组
- Servlet
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)和 Dubbo架构设计详解
- 404 Not Found The requested URL * was not found on this server
- WebService的介绍概念 收藏
- 《STL源码剖析》中关于set_new_handler的理解
- The Swift Programming Language学习笔记(十六)——析构过程
- eclipse+svn:遇到tree-conflict导致代码无法提交
- java生成一维码图片(2种方式)
- 指引列表弹框
- C/C++ 中嵌入 arm 汇编
- ArrayBlockingQueue和LinkedBlockingQueue
- YII2配置多语言
- github常见操作和常见错误!错误提示:fatal: remote origin already exists.
- xamarian studio 创建asp.net mvc razor project 报错:Could not locate Razor Host Factory type: System.We
- The Swift Programming Language学习笔记(十五)——构造过程
- 同等尺寸下为何android压缩出来的图片质量不如iphone
- solr查询语法
- Swift学习笔记八:枚举