1
我有接受指针的指针param的方法:现在目标C指向指针 - 如何传递零相较于未初始化的变量集区分为nil
+(void)someMethod:(NSString*_Nullable*_Nullable)parsed;
,如果我调用此方法,并通过“无“作为参数,然后我做里面的解除引用,如:
*parsed = soemthing;
我得到崩溃坏的访问。现在的问题是,如何构建条件来区分通过“无”与传递不initilized变量,如:
NSString* s; // this is technically nil too, but dereference works and doesn't crash
[someObj someMethod:&s];
,以防止在第一种情况中提到的崩溃。
嗨,谢谢你的回复。现在我看到解决方案可能比我想象的更容易。如果(解析)条件应该足以检查问题,因为解析的是该指针在内存中的地址,并且在将指针(偶数)传递给未初始化变量的情况下地址不为空。 – luky
严格地说,第一个测试应该是'NULL'而不是'nil'。后者仅适用于对象类型。第二个指针本身不是一个对象。 –
@JoshCaswell谢谢,我更新了代码以反映这一点。尽管我还没有看到一个平台,其中NULL和nil都不是都用数值0表示,但您应该将nil用于对象指针,将NULL用于内存指针,这是正确的。 – ekscrypto