NSNumber-Literale
Ich bin sehr neu in Objective-C. ich weiß, C und C++, aber Objective-C hat Recht, die Lernkurve. Sowieso, gibt es einen kürzeren Weg (evtl. durch irgendeine Art von NSNumber-literal, wenn eine solche vorhanden ist) zu schreiben, die folgenden:
[Tyler setArms:[[[NSNumber alloc] autorelease] initWithInt:1]];
- Für diejenigen, die sich Fragen, Tyler ist eine Instanz der Klasse Mensch, die ich erstellt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, verwenden Sie einfach eine der vielen Hilfsfunktionen wie
numberWithInt:
:Den Ausdruck
[NSNumber numberWithInt:1]
entspricht[[[NSNumber alloc] initWithInt:1] autorelease]
entspricht[[[NSNumber alloc] autorelease] initWithInt:1]
. Der letztere Ausdruck ist äußerst ungewöhnlich.-init*
Methode zurück, etwas anderes als das, was reserviert wurde, in den ersten Platz (wie, sagen wir, jeden NSString jemals instanziiert).Als der Clang v3.1 Sie können nun mit Objective-C-Literale.
So, die Beantwortung Ihrer konkreten Frage:
Kann jetzt geschrieben werden als:
Gibt es auch Literale für arrays und Wörterbücher, aber Sie sind über den Rahmen dieser Frage.
Nutzen Literale in Xcode benötigen Sie mindestens version 4.4 (zum Zeitpunkt des Schreibens dieses ist nur Vorschau).
NB: LLVM ist ein open source Projekt so keine dieser unterliegt Apple ' s NDA.
Müssen Sie nicht reservieren und initialisieren,
NSNumber
bietet eine bequeme Methode, das zu tun:In Xcode 4.4 gibt es nun NSNumber-Literale:
Die besten docs, die ich bisher gesehen habe, sind in der llvm Mann Seite.
Zwei Dinge, die in Ergänzung zu den bisherigen Antworten, die beide richtig sind:
Ersten, werden es einfacher für uns zu helfen, wenn Sie Folgen, Kakao benamungs Konventionen: Variablen, einschließlich der Objekt-Pointer, sollte beginnen mit einem Kleinbuchstaben. So, 'tyler' anstelle von 'Tyler'. Klassen und Typen beginnen mit Großbuchstaben.
Zweite, Sie hatte noch nie ein autorelease-Objekt, bevor Sie Sie initialisieren. Immer alloc zuerst, dann init, und dann tun, was Sie sonst noch brauchen, um zu tun, einschließlich release oder autorelease.