首页 > 代码库 > OC中NSClassFromString()与NSStringFromClass()的用法及应用场景
OC中NSClassFromString()与NSStringFromClass()的用法及应用场景
1.NSClassFromString()利用一个字符串创建一个类,我是在标签控制器中 UITabBarController中创建它的子控制器中使用的
1 - (void)viewDidLoad { 2 [super viewDidLoad]; 3 self.view.backgroundColor = [UIColor whiteColor]; 4 5 [self addChildViewControllerWithClassName:[ZSHomeViewController description] title:@"首页" imageName:@"home"]; 6 [self addChildViewControllerWithClassName:[ZSDiscoveryViewController description] title:@"发现" imageName:@"Found"]; 7 [self addChildViewControllerWithClassName:[ZSCheckViewController description] title:@"审核" imageName:@"audit"]; 8 [self addChildViewControllerWithClassName:[ZSMessageViewController description] title:@"消息" imageName:@"newstab"]; 9 10 } 11 12 ///添加子控制器 13 - (void)addChildViewControllerWithClassName:(NSString *)className title:(NSString *)title imageName:(NSString *)imageName{ 14 //这么创建的好处是当没有这个对象时,程序不会崩溃 15 UIViewController *vc = [[NSClassFromString(className) alloc]init]; 16 ZSBaseNavigationViewContrllerView *nav = [[ZSBaseNavigationViewContrllerView alloc]initWithRootViewController:vc]; 17 nav.tabBarItem.title = title; 18 nav.tabBarItem.image = [UIImage imageNamed:imageName]; 19 //渲染方式,UIImageRenderingModeAlwaysOriginal始终绘制图片的原始状态,不使用tintColor 20 //UIImageRenderingModeAutomatic // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式。 21 //UIImageRenderingModeAlwaysTemplate // 始终根据Tint Color绘制图片,忽略图片的颜色信息。 22 nav.tabBarItem.selectedImage = [[UIImage imageNamed:[imageName stringByAppendingString:@"_press"]]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 23 24 [self addChildViewController:nav]; 25 }
这么做的好处是当你的控制器不存在时,这么创建不会让程序崩溃
2.NSStringFromClass() 获取与类型名称同名的字符串
它的应用场景一般是动态的创建类,我是用它创建自定义cell的对象,因为每一种cell都要有不同的ReuseIdentifier,在工程中我们会遇到henduo需要自定义的cell,那么这么做就可以很方便的设置cell的id
1 + (instancetype)cellWithTableView:(UITableView *)tableView{ 2 if (self == nil) { 3 return [[self alloc]init]; 4 } 5 NSString *className = NSStringFromClass([self class]); 6 NSString *identifier = [className stringByAppendingString:@"CellId"]; 7 [tableView registerClass:[self class] forCellReuseIdentifier:identifier]; 8 return [tableView dequeueReusableCellWithIdentifier:identifier]; 9 }
<style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Menlo; color: #3495af } span.s1 { }</style> <style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Menlo; color: #3495af } span.s1 { }</style>
OC中NSClassFromString()与NSStringFromClass()的用法及应用场景
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。