Istnieje wiele metod kakao, które wymagają obiektu NSError jako parametru do metody, ale tak naprawdę są środkiem zwracania obiektu błędu do metody wywołującej, jeśli istnieją błędy. Czy ten zwrócony obiekt został zachowany? Oznacza to, że w kodzie obiektu wywołującego (metoda, do której jest zwracany błąd), czy nie trzeba być jakiś kod jak:Czy muszę zwolnić zwrócony obiekt NSError?
NSError *error;
[apiCall .... error:&error];
if (error){
[*error release];
}
Nie widziałem nigdzie, a jeśli to nie musi być zwolniony, czy to jest sposób na zrobienie tego?
Powodem, dla którego umieściłem kod błędu [*] jest to, że można również podać NSError var jako: NSError ** error; Co jest punktem do punktu do obiektu. Czy to jest ważne? – casademora
Podajesz 'NSError **' jako typ dla 'error' tylko wtedy, gdy jest to" out parameter "lub" output parameter ". W takim przypadku wyłuskiwałbyś, ale zwróć uwagę, że '* error' miałby typ' NSError * '. Używasz parametrów, aby ominąć fakt, że funkcje mają tylko jedną wartość zwracaną. Parametry wyjściowe w Objc-C używają 'Type **', ponieważ argumenty są wartościami typu pass-by-value. Zauważ także, że jeśli 'error' miał typ' NSError ** ', musiałbyś zainicjować go za pomocą wskaźnika do' NSError * '(co robisz w wywołaniu API) lub przydzielić wskaźnik, co się dzieje ale jest trochę dziwne. – outis
@outis Jeśli jest autoodtwarzany, to nie używa go w metodzie wywołującej niepoprawny. Ponieważ zasięg metody, która faktycznie utworzył NSError * i przypisał go do parametru out NSError **, zakończył się wywołaniem metody i używamy go po tym w wywołującym. – SayeedHussain