美文网首页
[NSClassFromString 实例化静态库中的类]

[NSClassFromString 实例化静态库中的类]

作者: 咚咚嗒大人 | 来源:发表于2023-06-06 10:24 被阅读0次

开发过程中想使用反射的机制,加载静态库中的类

测试过程中发现当正常#import并直接初始化时,再用反射加载对象,是可以获取到类对象的。
#import "StaticLibyClassNameXXXXXXSDK.h"
StaticLibyClassName * xxxx = [[StaticLibyClassName alloc]init];

当有上面两步操作后myClass值不为空

Class myClass = NSClassFromString("StaticLibyClassName");
image.png

但是如果直接没有创建过对象,而是直接使用反射的机制创建一个类对象,就会得到一个空对象。

image.png

解决办法:

StaticLibyClassName是从静态库中实例化一个Class,需要在bulid settings中的Other Linker Flags中添加"-ObjC"标识。否则 myClass 为nil.

image.png
Flags 位置 作用
-ObjC Other Linker Flags 链接静态库中所有的Objective-C代码到APP
-all_load Other Linker Flags 全加载,链接静态库中所有的代码到APP,无论是c、c++还是oc
-force_load Other Linker Flags 链接指定静态库中所有的代码到APP,无论是c、c++还是oc

补充说明:
对于制作的静态库包含分类的,制作的工程中,可以不用设置-ObjC,但是使用时,必须要添加-ObjC
对于制作动态库包含分类的,制作的工程添加-ObjC,使用的工程可以不添加-ObjC

附赠参考文档:
https://www.cnblogs.com/zhidao-chen/p/3259786.html
https://www.jianshu.com/p/360c804f4a6e

相关文章

  • Spring学习笔记

    Spring实例化bean1、构造方法实例化bean 2、使用静态工厂实例化 类中的静态方法如下: 3、使用动态工...

  • TypeScript:属性装饰器

    回顾类的属性 回顾面向对象,类中的属性分为实例属性和静态属性,实例属性属于实例化后的对象,静态属性属于类本身 在类...

  • OC中的反射机制

    class反射 通过类名的字符串形式实例化对象 Class class NSClassFromString@(@"...

  • 基础知识面试

    1. iOS反射机制? 通过类名的字符串形式实例化对象 Classclass=NSClassFromString(...

  • 静态类和动态类的区别和使用

    1、静态类中的静态方法可以通过类名直接调用静态方法,不需要实例化对象。但是无法和Spring容器中的bean进行交...

  • NumberFormatException: multiple

    通常DataUtils的优化就是DateUtils类中 实例化SimpleDateFormat,并提供静态方法...

  • 静态类 ,静态构造函数,单例设计模式

    /*用static修饰的类为静态类 *静态类的特点: 1.静态类不能被直接实例化 2.静态类不能被继承 3.静态类...

  • JS常用的静态方法

    什么是静态方法和实例方法? 静态方法: 静态方法属于整个类所有,因此调用它不用实例化,可以直接调用------类....

  • service层和model层应该全部使用静态类吗?

    静态类,即整个类全部使用静态方法。好处自然是不用讲,可以不用实例化。直接使用类名::方法调用。而实例化方法,必须先...

  • 自整理1

    1.java类的实例的初始化过程: 静态变量->静态代码块->main->实例变量->实例初始化块->构造器 加载...

网友评论

      本文标题:[NSClassFromString 实例化静态库中的类]

      本文链接:https://www.haomeiwen.com/subject/mecgedtx.html