Objective c 为什么alloc返回零?(目标-C)

Objective 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]; 这从来都

我正在将iOS opengl游戏移植到metal

使用金属角

我使用预编译的动态库

创建MGLContext时返回nil

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!=nil
init
不是
MGLContext
的指定初始值设定项,也不是方便的初始值设定项。根据源代码,它需要
initWithAPI:
。(我仍然怀疑
MGLContext
是零,因为链接很弱)@opencai,所以如果原始代码是
[[MGLContext alloc]init]
,那么
nil
很可能是由
init
返回的,因为它是错误的初始值设定项。错误的初始值设定项不会返回
nil
。它只是无法正确设置对象(查看代码,看看它实际做了什么)
nil
表示该类不可用。@RobNapier可能有代码:
-(instancetype)init{[super init];return nil;}