2016-05-14 10 views
2

Ich möchte wissen, ob es möglich ist, Objective-C-Literale wie NSString zu erstellen, wo anstelle von , und zuweisen Sie einfach einen Wert zuweisen, wie @"A string".Erstellen Objective-C literal Objekt wie NSString

Offensichtlich NSString ist ein Objekt, weil es Methoden hat, um die Daten zusätzlich zu manipulieren, so in der Theorie sollte es einen Weg, um es selbst zu tun, aber ich bin nicht sicher, wo man überhaupt solche Sachen finden.

+0

Frage unklar .. NSInteger ist ein primitives (es ist ein typedef für long int oder ähnlich). NSString ist nicht es ist ein Objekt. Was genau wollen Sie tun? – matt

+0

"Sie können einfach einen Wert zuweisen" Aber welchen Wert würden Sie zuweisen? – matt

Antwort

2

Objective-C ist C. Das primitive (was ich skalare nennen würde) Datentypen sind alle Zahlen und werden vollständig von der Sprache definiert; Sie können nicht zu ihnen hinzufügen (obwohl man sie typedef mit umbenennen können. Die entsprechenden Literale, wie 1 und "hello", sind auch Teil von C.

Ähnlich Literale wie @"howdy" und @[@"howdy"], obwohl eher von Objective-C definiert als C, sind Teil der Sprache und Sie können nicht ändern oder hinzufügen, wie die literale Syntax in die Sprache eingebaut ist

+0

Etwas wie das, was Sie beschreiben, ist In Swift ist es jedoch möglich, einen Typ an eines der eingebauten 'Literal'-Protokolle anzupassen und somit ein Literal zu verwenden, in dem ein Objekt dieses Typs erwartet wird. Ein Beispiel finden Sie unter http://www.apeth.com/swiftBook/ch04.html#_literal_convertibles. Dies könnte ein Grund für Swift sein (oder zumindest versuchen). – matt

+0

Ich denke, dass Sie die Frage falsch interpretieren. Ich möchte nicht ändern, wie die Literale formatiert werden oder ähnliches. Ich möchte, dass einem Objekt ein Primitiv wie ein Int oder ein String oder ein Array zugewiesen werden kann, wenn dies möglich ist, zB MyNewClass * class = @ "Hallo" oder so ähnlich – SonarSoundProgramming

+3

Ich denke, Sie interpretieren die Antwort falsch. Ich sage Ihnen, dass Sie das nicht tun können, weil '@" Hallo "' _is_ ein String-Literal ist und nicht dorthin gehen kann, wo eine MyNewClass erwartet wird. Aber du kannst so etwas in Swift machen. Da hast du mich zweimal dazu gebracht, meine Antwort zu sagen, gut gemacht. :) – matt

Verwandte Themen