使用NSClassFromString】的更多相关文章

  NSString *className = self.classNameArray[randomNumber]; Class viewClass = NSClassFromString(className);  //根据类名称得到类 id view = [[viewClass alloc] initHomeTemplateViewWithArray:arr delegate :delegate];  //初始化的方法所有需要随机的view都一样…
一.NSClassFromString是NSObjCRuntime.h的方法 FOUNDATION_EXPORT Class __nullable NSClassFromString(NSString *aClassName); Description:Obtains a class by name.The name of a class.Parameters:aClassName The name of a classReturns:The class object named by aCla…
如果你在静态库中有从类名反射回类的代码, 如下: NSString *myClassStr = @"myClass"; Class myClazz = NSClassFromString(myClassStr); if (myClazz) { id myClassInit = [[myClazz alloc] init]; } 有时候(经常)会出现得到了Class为nil的情况, 网上搜索, 一般是这么说的: The class object named by aClassName,…
在写OC的时候需要用 NSClassFromString(classStringName)获得一个类,如果存在就用这个类型来声明一个对象, 但是在swift的时候却往往得不到这个类,为什么呢? 从截图看 分析swift里面的对象还有该工程的名字CFBundleName 所以我们可以分析出只要加上该工程的名字就可以得到这个类了写法如下 extension NSObject { // create a static method to get a swift class for a string n…
1. NSClassFromString 这个方法判断类是否存在,如果存在就动态加载的,不存为就返回一个空对象; id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init]; 正常情况下等价于:id myObj = [[MySpecialClass alloc] init]; 优点: 1, 弱化连接,因此并不会把没有的Framework也link到程序中. 2,不需要使用import,因为类是动态加载的,只要存在就可以加…
使用NSClassFromString 使用NSClassFromString可以直接从字符串初始化出对象出来,即使不引用头文件也没关系,以下是源码: AppDelegate.m // // AppDelegate.m // Class // // Copyright (c) 2014年 Y.X. All rights reserved. // #import "AppDelegate.h" @implementation AppDelegate - (BOOL)application…
1.NSClassFromString()利用一个字符串创建一个类,我是在标签控制器中 UITabBarController中创建它的子控制器中使用的 - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; [self addChildViewControllerWithClassName:[ZSHomeViewController description] titl…
在OC和Swift混编的过程中发现在OC中通过NSClassFromString获取不到Swift中的类,调研了一下发现问题所在,下面是我的解决方案: 问题的发现过程 UIViewController *destinationVC = [[NSClassFromString(demoInfoModel.demoVCName) alloc] init]; [self.navigationController pushViewController:destinationVC animated:YES…
Class myClass = NSClassFromString("StaticLibyClassName"); StaticLibyClassName是从静态库中实例化一个Class,需要在bulid settings中的Other Linker Flags中添加“-ObjC"标识.否则 myClass 为nil. 还有种坑爹的情况,Build Phases 中没有对应的类.m 文件,当从外部拖入文件时候,虽然勾选了 copy,编译也没有报告错误,但...不说了,加进对应…
在oc中将字符串转换成类名直接调用NSClassFromString("classname")即可,但是到了swift中变的麻烦多了 swift中如果要将字符串转换为类型需要以下几个步骤 1.获取包名 var name = Bundle.main.object(forInfoDictionaryKey: "CFBundleExecutable") as? String//这是获取项目的名称, 这个特别需要注意一点的是如果你的包名中有'-'横线这样的字符,在拿到包名后…