问题描述
我正在将 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
谢谢大家