本文共 1518 字,大约阅读时间需要 5 分钟。
使用NSClassFromString
使用NSClassFromString可以直接从字符串初始化出对象出来,即使不引用头文件也没关系,以下是源码:
AppDelegate.m
//// AppDelegate.m// Class//// Copyright (c) 2014年 Y.X. All rights reserved.//#import "AppDelegate.h"@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; Class aClass = NSClassFromString(@"RootViewController"); UIViewController *CV = [[aClass alloc] init]; self.window.rootViewController = CV; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES;}@endRootViewController.m
//// RootViewController.m// Class//// Copyright (c) 2014年 Y.X. All rights reserved.//#import "RootViewController.h"@interface RootViewController ()@end@implementation RootViewController- (void)viewDidLoad{ [super viewDidLoad]; self.view.backgroundColor = [UIColor redColor];}@end
改进点的方式(直接改装成为category):
NSString+CreateClass.h 与 NSString+CreateClass.m
//// NSString+CreateClass.h// Class//// Copyright (c) 2014年 Y.X. All rights reserved.//#import@interface NSString (CreateClass)- (Class)toClass;@end
//// NSString+CreateClass.m// Class//// Copyright (c) 2014年 Y.X. All rights reserved.//#import "NSString+CreateClass.h"@implementation NSString (CreateClass)- (Class)toClass{ return NSClassFromString(self);}@end
-备注-
这种用法是有着缺陷的呢:
这是在运行时的时候检测出来的,很不保险的说.
转载地址:http://qcesa.baihongyu.com/