Was ist das starke Eigenschaftsattribut?


80

Ich verwende die Xcode-Beta für Entwickler und bemerke einige subtile Unterschiede. Darunter befindet sich ein neues Attribut für deklarierte Eigenschaften.

@property(strong)IBOutlet NSArrayController *arrayControl;

Meine Frage ist: Was bedeutet das starke Attribut? Ersetzt es ein älteres oder ist es etwas völlig Neues? Ich habe Google und die Entwicklerdokumentation durchsucht und konnte nichts finden. Bis ich weiß, was es ist, zögere ich, es zu benutzen.

Danke im Voraus



3
Nun, es ist nicht so, als würde ich Unternehmensgeheimnisse preisgeben, aber ja, ich hätte das wahrscheinlich in Apple Dev Foren veröffentlichen sollen
Chance Hudson

Ich sehe immer wieder diese "Beta NDA" -Kommentare zu objektiven Themen. Ich finde es witzig, dass Apple das Bedürfnis verspürt, seine objektiven c-Geheimnisse zu schützen (jeder möchte unbedingt objektive c kopieren!), Und noch lustiger, dass Entwickler das Bedürfnis verspüren, die Leute darüber zu nerven.
Jehan

Antworten:



10

Eine starke Referenz ist eine Referenz auf ein Objekt, die verhindert, dass die Zuordnung aufgehoben wird. Mit anderen Worten, es entsteht eine Eigentümerbeziehung. Während zuvor Sie dies tun würden:

**// Non-ARC Compliant Declaration
@property(retain) NSObject *obj;**

Unter ARC gehen wir wie folgt vor, um sicherzustellen, dass eine Klasseninstanz ein Eigentumsinteresse an einem referenzierten Objekt hat (dh, es kann erst freigegeben werden, wenn der Eigentümer es ist).

**// ARC Compliant Declaration
@property(strong) NSObject *obj;**

4

Wie wir wissen, können wir in iOS 5 kein Objekt in einem ARC-basierten Projekt freigeben. Wenn wir also ein Objekt zur späteren Verwendung behalten möchten und nicht möchten, dass ARC das Objekt aus dem Speicher entfernt, legen wir fest die Eigenschaft für das Objekt als "Stark".

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.