Objective c 为什么alloc返回零?(目标-C)
我正在将iOS opengl游戏移植到metal 使用金属角 我使用预编译的动态库 创建MGLContext时返回nilObjective c 为什么alloc返回零?(目标-C),objective-c,null,dynamic-library,alloc,Objective C,Null,Dynamic Library,Alloc,我正在将iOS opengl游戏移植到metal 使用金属角 我使用预编译的动态库 创建MGLContext时返回nil MGLContext * aaa = [MGLContext alloc]; aaa == nil 为什么呢 我认为alloc只有在现代ObjC中内存溢出时才会返回nil,只调用+alloc,而不调用init方法: 您必须使用初始化。。。方法来完成初始化过程。例如: TheClass *newObject = [[TheClass alloc] init]; 这从来都
MGLContext * aaa = [MGLContext alloc];
aaa == nil
为什么呢
我认为alloc只有在现代ObjC中内存溢出时才会返回nil,只调用+alloc
,而不调用init方法:
您必须使用初始化。。。方法来完成初始化过程。例如:
TheClass *newObject = [[TheClass alloc] init];
这从来都不是一个好的实践,但现在您无法拆分分配和初始化
也就是说,你是如何测试的?到目前为止,我还不能复制它。
MGLContext
本身可能是nil
。如果动态库存在且不存在,则会发生这种情况。这是由“弱链接”引起的问题
谢谢@RobNapier
谢谢大家
在设备和模拟器上都是零吗?返回的是什么
[MGLContext class]
?同意,我简化了原始代码是MGLContext*context=[MGLContext alloc]init]的问题;我用NSString替换了MGLContext,aaa不是nil NSString*aaa=[NSString alloc];aaa!=nilinit
不是MGLContext
的指定初始值设定项,也不是方便的初始值设定项。根据源代码,它需要initWithAPI:
。(我仍然怀疑MGLContext
是零,因为链接很弱)@opencai,所以如果原始代码是[[MGLContext alloc]init]
,那么nil
很可能是由init
返回的,因为它是错误的初始值设定项。错误的初始值设定项不会返回nil
。它只是无法正确设置对象(查看代码,看看它实际做了什么)nil
表示该类不可用。@RobNapier可能有代码:-(instancetype)init{[super init];return nil;}
?