<创建于 2013-12-21 20:45:49 注:快累死了,倒霉催的。。。>
通过classString构造class然后实例化一个对象的过程很简单。如下
NSString *myClassStr = @"myClass";
Class myClazz = NSClassFromString(myClassStr);
if (myClazz) {
id myClassInit = [[myClazz alloc] init];
}
前不久遇到一个问题,"主工程(MainProject)"调"静态库工程(LibProject)"的方法实例化对象,目标类存在于LibProject中,构造方法如下
+(id)getObjectWithClassName:(NSString *)aClassName {
id rtnObject = nil;
Class myClazz = NSClassFromString(aClassName);
if (myClazz) {
rtnObject = [[myClazz alloc] init];
}
return rtnObject;
}
每次都返回nil,同时很确定的一点是这个类肯定存在,于是在主工程直接反射创建对象,同样是nil。
进一步做了一个实验
1. 在主工程的MainViewController中 #import "MyClassForTest.h"
2. -(void)test {
NSLog(@"wzf===>%@",[MyClassForTest class]);
Class myClazz = NSClassFromString(@"MyClassForTest");
NSLog(@"wzf===>%@",[myClazz class]);
}
这样就能够得到, = =!
搜索了一个google,在stackoverflow中有人提出了同样的问题(http://stackoverflow.com/questions/2227085/nsclassfromstring-returns-nil)
有人提到了文档中的解释 “Return Value :The class object named by aClassName, or nil if no class by that name is currently loaded. If aClassName is nil, returns nil.” 依照其解释,如果返回的是nil的话,要吗不存在这个“aClassName”,要吗是"没有loaded"。排除前一项,只能存在于后一项,那就是“此时未加载”。
因此联想到了,Other Lind Flag中的 “-all_load”设置,这个就是解决问题的关键。
"-all_load"设置方式,选择MainProject.xcodeproject的MainProject(target) 在Build Setting中找到Other Link ... 添加上就可以了
分享到:
相关推荐
类型通过实现一个接口的所有方法来实现该接口。既然无需专门显式声明,也就没有“implements”关键字。 接口也是值。它们可以像其它值一样传递。 接口值可以用作函数的参数或返回值。 在内部,接口值可以看做包含值...
与普通的NIL模具相比,SOI模具的光滑且垂直的侧壁在NIL后忠实地印制了SU-8形成的多厘米长的流体通道,具有光滑且垂直的侧壁,并通过独立式优化了密封Craft.io,从而使脱模过程更加容易SU-8粘合膜。
清理字典转模型后模型中的nil,属性多于字典,服务器返回为null等情况
特别是,我们找到了带电Solv和Nil几何层的解决方案。 我们还发现Nil黑洞具有超标度违规。 对于我们所有的解决方案,我们计算相应双场理论的热电直流输运系数。 我们发现没有超标度违规的Solv和Nil黑洞对金属是双重...
1.简介 按照Go语言的规范,任何类型在未初始化的时候都对应一个零值: 布尔型零值为:false ...若对一个值为nil的指针调用其方法或者访问对应类型的属性,则会导致panic. panic: runtime error: invalid mem
lua-cjson lua的cjson库 decode略做修改 结果中null还原成nil
从对象和数组中删除nil值。 将所有其他nil值转换为null。 例子 var noNil = require ( 'no-nil' ) ; var input = [ 1 , undefined ] ; console . log ( noNil ( input ) ) ; // [1]; ##执照 The MIT License ...
一个关于数组越界、字典key与value为nil情况下导致的低级错误的线上Crash的避免的仓库
安装将此行添加到应用程序的 Gemfile 中: gem 'mr_to_nil' 然后执行: $ bundle或者自己安装: $ gem install mr_to_nil用法 [ :random , :array ] . to_nil # nil31337 . to_nil # nil"Yet another shitty gem" . ...
IOS 基础之nil,NULL,NSNULL区别详解 ① nil:一般赋值给空对象。 ② NULL:NULL 是一个通用指针(泛型指针)。 一般赋值给 nil 之外的其他空值。如SEL等。 ③ NSNULL:[NSNull null] 是一个对象,他用在不能使用 ...
将方法委托给目标,除非为零。 安装 将此行添加到应用程序的 Gemfile 中: gem 'nil_or' 然后执行: $ bundle 或者自己安装: $ gem install nil_or 用法 我什么时候需要它? 而不是写: date_of_birth = ...
在iOS开发过程中经常需要与服务器进行数据通讯,Json就是一种常用的高效简洁的数据格式,通过本文给大家介绍iOS中json解析出现的null,nil,NSNumber的解决办法,感兴趣的朋友参考下
相信有不少朋友想知道,在 Objective-C 中 nil 和 Nil 以及 NULL 的区别。最重要的是,在面试中还有不少朋友常会被问到。现在小编在这里统一详细说明。
= nil {”块 if err != nil {当前功能块, if err != nil {生成。 用法 安装和更新方式 $ go get -u github.com/koron/iferr 运行, if err != nil {对于1234字节的位置块,则获取。 $ iferr -pos 1234 < main....
概述Emacs 的持久存储,失败时返回 nil。快速开始( require 'persistent-soft )(persistent-soft-store 'hundred 100 " mydatastore " )(persistent-soft-fetch 'hundred " mydatastore " ) ; 100(persistent-soft-...
零 当您不想显示任何内容时,可以在窗口小部件树中添加的... 因为使用它的最佳方法是调用const Nil() ,所以它还带有一个nil常量,您可以在任何地方使用它(这是const Nil() )。 用法 import 'package:nil/nil.dart
Amazon Best Sellers Rank: #3 in Data Mining (Kindle Store) #4 in Big Data Businesses #5 in Information Management (Kindle Store) This book fills the need for a concise and conversational book on the...
nil nil 是 ObjC 对象的字面空值,对应 id 类型的对象,或者使用 @interface 声明的 ObjC 对象。 例如: NSString *someString = nil; NSURL *someURL = nil; id someObject = nil; if (anotherObject == nil) // ...
数组越界 字典value为nil导致崩溃 只要导入这个分类在项目中就可以解决了 不需要写代码
接口在底层的实现有两个部分,type 和 data:- 显式地将nil赋值给接口时:接口 == nil,此时接口的type和data都为nil。type Stu