类名写入plist文件,动态引入类

简介: <p style="margin-top:0px; margin-bottom:0px; font-size:14px; font-family:Menlo">   把类名写入plist文件,动态引入类  </p> <p style="margin-top:0px; margin-bottom:0px; font-size:14px; font-family:Menlo">NSStrin

   把类名写入plist文件,动态引入类  

NSString *classNameKey = [moduleData objectForKey:@"class"];

    

    NSDictionary *moduleDic = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Module" ofType:@"plist"]];

    

    NSString *className = [moduleDic objectForKey:classNameKey];

    把对应的字符串映射成对应的类

    Class moduleClass = NSClassFromString(className);

    

    NSObject *module = [moduleClass new];

    

    UIViewController *moduleVC = nil;

    

    if ([module respondsToSelector:@selector(init)])

    {

        NSLog(@"module vc init");

        moduleVC = [module performSelector:@selector(init)];

    }

    if (!moduleVC)

    {

        NSLog(@"notice view");

        moduleVC = [[[NoticeViewController alloc] initWithNibName:nil bundle:nil] autorelease];

    }

    //传参数

    if ([moduleVC respondsToSelector:@selector(getModuleData:)])

    {

        [moduleVC performSelector:@selector(getModuleData:) withObject:moduleData];

    }

    //修改frame

    if ([moduleVC respondsToSelector:@selector(changeFrameWithRect:)])

    {

        [moduleVC performSelector:@selector(changeFrameWithRect:) withObject:NSStringFromCGRect(rect)];

    }

    //显示返回按钮

    if (isShow && [moduleVC respondsToSelector:@selector(createNavBar)])

    {

        [moduleVC performSelector:@selector(createNavBar) withObject:nil];

    }

    

    [module autorelease];

目录
相关文章
|
10月前
|
前端开发 Java API
类加载器“如果我定义了一个类名与Java核心类类名相同,那它还能被加载吗?”
类加载器“如果我定义了一个类名与Java核心类类名相同,那它还能被加载吗?”
|
10月前
|
开发框架 JSON 定位技术
uniapp中map组件动态加载marks标记
uniapp中map组件动态加载marks标记
775 5
|
10月前
|
存储 JavaScript 前端开发
对象和类:JS是一种基于对象的语言,可以创建和使用自定义对象。ES6引入了类的概念,使得面向对象编程更加方便。
对象和类:JS是一种基于对象的语言,可以创建和使用自定义对象。ES6引入了类的概念,使得面向对象编程更加方便。
48 0
|
前端开发 小程序 PHP
laravel5.8(四)引入自定义常量文件及公共函数文件
开发过程中,我们一般会用到一些不会改变,或者改变不是很频繁的值,这样的值我们一般将他们定义成常量。 比如网站根目录,或者分页数,或者域名等等。 那我们如何在laravel5.8中引入自定义的常量文件及公共的函数文件呢。 大概有两种方式: 1:框架目录下引入(不推荐) 在框架目录vendor下新建常量文件const.php,以及公共函数文件function.php 在autoload.php文件中引入。 这种方法是可以的,但是不推荐,框架目录下最好都是框架自己的那些文件,正常来说,框架的文件我们在开发过程中,git是不会进行托管的。 2:在app目录下引入 在bootstrap目录下新建常量文件
82 0
ProGuard:类混淆,类的指定函数保留
ProGuard:类混淆,类的指定函数保留
118 0
|
前端开发 JavaScript PHP
Yii2 使用AssetBundle中的$sourcePath对资源文件进引入和调用
Yii2 使用AssetBundle中的$sourcePath对资源文件进引入和调用
283 0
|
前端开发 搜索推荐 开发者
使用 localIdentName 来自定义模块化的类名|学习笔记
快速学习使用 localIdentName 来自定义模块化的类名
100 0
|
前端开发 搜索推荐
使用localIdentName来自定义模块化的类名
一、设置样式 1.使用普通的style样式 2.启用css-modules 3.使用lo calI dent Name自定义生成的类名格式,可选的参数有
|
存储 Android开发
【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( 使用 DexClassLoader 获取组件类失败 | 失败原因分析 | 自定义类加载器没有加载组件类的权限 )
【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( 使用 DexClassLoader 获取组件类失败 | 失败原因分析 | 自定义类加载器没有加载组件类的权限 )
440 0
【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( 使用 DexClassLoader 获取组件类失败 | 失败原因分析 | 自定义类加载器没有加载组件类的权限 )