2016-04-30 5 views
0

Innerhalb von Init, muss ich eine eindeutige Kennung für die Klasseninstanz festlegen - eine, die nicht von anderen Instanzen oder Klassen wiederverwendet werden.Wie erhalte ich eine eindeutige Bezeichner-Zeichenfolge für jede Klasseninstanz?

Gibt es eine Art interne Kennung? Wenn nicht, wie kann ich einen erzeugen, der nicht kollidiert?

+2

Ich bin neugierig zu welchem ​​Zweck Sie eine Kennung benötigen? – SunilG

+0

Wie wäre es mit einer globalen, inkrementellen Ganzzahl? – Darko

Antwort

1

Für NSObject-abgeleitete Objekte benötigen Sie keine solche Sache - seine Speicheradresse, die leicht zu erhalten ist, ist einzigartig.

Für andere Objekttypen können Sie die NSUUID-Klasse verwenden, um eine eindeutige eindeutige ID zu erhalten.

+0

Hi @matt: Da eine Speicheradresse wiederverwendet werden kann (sobald das Objekt freigegeben wird), ist diese Anforderung, die nicht von anderen Instanzen oder Klassen wiederverwendet werden kann, nicht garantiert. –

+1

Oooh. Nun, @appzYourLife, wenn seine Anforderungen wirklich so streng sind, dann scheint die von NSUUID generierte GUID der einfachste Weg zu sein. Dies ist schließlich, wofür es ist. Auf der anderen Seite scheint diese ganze Anforderung wie ein schlechter Geruch zu sein; man möchte mehr darüber wissen, was hier wirklich passiert. – matt

+0

Oder vielleicht habe ich nur die ursprüngliche Frage falsch interpretiert. –

-1

Verwenden Sie eine GUID mit einer Kombination aus einem Zeitstempel. Sie können auch einfach eine GUID verwenden, wenn Sie möchten.

Verwandte Themen