为什么alloc返回nil? ( 目标-C )

问题描述

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

使用金属角 https://github.com/kakashidinho/metalangle

我使用预编译的动态库

创建 MGLContext 时返回 nil

MGLContext * aaa = [MGLContext alloc];

aaa == nil

这是为什么?

我以为alloc只有在内存溢出时才会返回nil

解决方法

在现代 ObjC 中,it is not well-defined 只调用 +alloc 而不调用 init 方法:

您必须使用 init... 方法来完成初始化过程。例如:

TheClass *newObject = [[TheClass alloc] init];

这从来都不是一个好习惯,但您现在不能将分配和初始化分开。

也就是说,你是如何测试这个的?到目前为止,我还无法重现它。 MGLContext 本身可能是 nil。如果动态库是 weakly linked 并且不存在,则会发生这种情况。

,

这是一个“弱链接”导致的问题

谢谢@RobNapier

谢谢大家

image1

image2