Die NSArray initWithCapacity-Methode verwendet einen unsigned int als Argument. Was auch immer der maximale Wert eines unsigned int auf Ihrer Plattform ist, kann das theoretische Limit sein. Das tatsächliche Limit hängt jedoch eher von der verfügbaren Speichermenge ab.
NSNotFound ist definiert als NSIntegerMax (dieser Wert ändert sich, wenn Sie ein 32-Bit- oder 64-Bit-System verwenden)
NSNotFound ist auch das Ergebnis, das Sie erhalten, wenn Sie ein
tun[nsarray indexOfObject: obj]
und kein Objekt gefunden.
Wenn dir nicht genug Platz / Speicher zur Verfügung steht, würde ich sagen, dass dies deine Grenze wäre.
NSArray ist ein Container mit Zeigern auf andere Objekte. Die maximale Kapazität ist definiert durch NSUInteger (zu den neuesten Versionen der verfügbaren Betriebssysteme):
Beim Erstellen von 32-Bit-Anwendungen NSUInteger ist ein 32-Bit-Zeichen ohne Vorzeichen ganze Zahl. Eine 64-Bit-Anwendung behandelt NSUInteger als 64-Bit unsigned Ganzzahl
Unabhängig von der Größe von NSUInteger auf einem bestimmten Gerät gibt es daher die maximale Anzahl von Objektzeigern, die es enthalten kann. Wie Eimantas jedoch in seiner Antwort ansprach, ist dies nicht dasselbe wie "wie viele Objekte kann es halten", weil dies von verfügbarem Speicher abhängt. Möglicherweise verfügen Sie nicht über genügend verfügbaren Arbeitsspeicher, um beispielsweise ein Array mit sechs Milliarden Steckplätzen zuzuordnen ...