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