Ein Array ist gleich einem anderen Array (isEqualToArray: selector), wenn sie die gleichen Objekte (in der gleichen Reihenfolge) haben. Dies wird mit der isEqual: -Methode verifiziert (abgesehen davon, dass das Array veränderbar ist oder nicht).
Sie sind genauso, die eine oder andere Initialisierung macht keinen Unterschied. Überprüfen Sie, ob das Ergebnis von isEqualToArray protokolliert wird:.
%Vor%Beachten Sie, dass der Vergleich auch dann wahr wäre, wenn Sie ihn mit einer nicht veränderbaren Kopie verglichen haben.
NEIN !!! Zwischen diesen Initialisierungen gibt es zwei Unterschiede:
Zählung beibehalten: Im ersten Fall erhalten Sie ein automatisch freigegebenes Objekt, im zweiten Fall erhalten Sie ein beibehaltenes Objekt, das Sie nachher freigeben müssen (dies trifft nicht auf ARC zu)
Wenn originalArray nil ist, erhalten Sie im ersten Fall ein veränderbares Array mit 0 Elementen, im zweiten Fall erhalten Sie null (weil das Senden einer Nachricht an nil mit nil endet). In Ihrem Beispiel ist es klar, dass originalArray nicht Null ist, aber im wirklichen Leben können Sie diesen Fall erreichen (ich hatte gerade den Fall)
Tags und Links objective-c ios6 nsmutablearray