Meine Frage ist, warum schwache IBOutletCollection immer Null ist? Wenn der Wechsel schwach bis stark ist, sind alle meine Knöpfe da, es ist wirklich komisch. Ich versuche, die Logik von Apple zu verstehen, und ich kann keinen Unterschied zwischen einer einzelnen Taste und einer Reihe von Tasten in Bezug auf die Speicherverwaltung erkennen. Fehle ich etwas?schwach IBOutleCollection ist immer Null
Antwort
In keiner Weise vollständig, aber einfache Antwort:
Ein einzelner UIButton
mit IB erstellt automatisch ein Subview von einem anderen UIView ist (zumindest die .view Ihrer UIViewController
) und wies stark an deswegen.
Ein IBOutletCollection
ist ein NSArray
oder NSMutableArray
, kein UIView
überall angezeigt und UIViews haben offensichtlich keine Eigenschaft zeigt auf Outlet (Collection) s, diesen Punkt zu ihnen, so ist nichts zu IBOutletcollections zeigt. Das musst du selbst machen.
Von Apple Resource Programming Guide:
Jedes Mal, wenn Sie die NSBundle oder NSNib Klasse bitten, eine Feder-Datei zu laden, erstellt der zugrunde liegende Code eine neue Kopie der Objekte in dieser Datei und gibt sie dir. (Der Code zum Laden von Nibs lädt keine Nib-Dateiobjekte aus einem vorherigen Ladeversuch.) Sie müssen sicherstellen, dass Sie das neue Objektdiagramm so lange wie nötig beibehalten und es ablehnen, wenn Sie damit fertig sind. In der Regel benötigen Sie starke Referenzen auf Objekte der obersten Ebene, um sicherzustellen, dass sie nicht freigegeben werden. Sie benötigen keine starken Verweise auf Objekte, die sich im Diagramm unten befinden, da sie den Eltern gehören, und Sie sollten das Risiko der Erstellung starker Referenzzyklen minimieren.
Aus einer praktischen Perspektive, in iOS und OS X-Outlets sollten als deklarierte Eigenschaften definiert werden. Outlets sollten im Allgemeinen schwach sein, mit Ausnahme von denen, die vom Eigentümer der Datei stammen, zu Objekten der obersten Ebene in einer Nib-Datei (oder in iOS, einer Storyboard-Szene), die stark sein sollte. Outlets, die Sie erstellen, sollten daher in der Regel schwach sein, denn:
Outlets, die Sie beispielsweise in Teilansichten einer View-Controller-Ansicht oder eines Fenster-Controller-Fensters erstellen, sind beliebige Referenzen zwischen Objekten, die keine Eigentumsrechte implizieren. Die starken Steckdosen werden häufig durch Framework-Klassen angegeben (z. B. UViewViewController-View-Outlet oder NSWindowControllers Fenster-Outlet).
@property (weak) IBOutlet MyView *viewContainerSubview;
@property (strong) IBOutlet MyOtherClass *topLevelObject;
Und weiter unten auf der Seite:
Outlets zu stark verändert werden sollen, wenn der Ausgang in Betracht gezogen werden sollte, das referenzierte Objekt zu besitzen:
- Wie bereits erwähnt, diese ist oft der Fall mit dem Eigentümer der Datei - Objekte auf oberster Ebene in einer Nib-Datei werden häufig als Besitzer des Dateibesitzers betrachtet.
- Sie können in einigen Situationen ein Objekt aus einer NIB-Datei außerhalb des ursprünglichen Containers benötigen. Sie verfügen beispielsweise über eine Quelle für eine Sicht, die vorübergehend aus der ursprünglichen Sichthierarchie entfernt werden kann und daher unabhängig voneinander verwaltet werden muss.
- 1. Ausnahme ist NULL immer
- 2. CommandParameter ist immer NULL
- 3. AnonymousId ist immer Null
- 4. RemoteIP ist immer null
- 5. EventHandler ist immer Null?
- 6. Delegat ist immer Null
- 7. navigator.serviceWorker.controller ist immer Null
- 8. Event Handler ist immer null
- 9. Warum ist PrinterState immer null?
- 10. beobachtbaren Feldlänge ist immer Null
- 11. Interface-Wert ist immer Null
- 12. NSHTTPCookie: expiresDate ist immer null
- 13. Suche EditText ist immer null
- 14. WebBrowser Dokument ist immer null
- 15. Tkinter: Checkboxvariable ist immer Null
- 16. Tensorflow Gradient ist immer Null
- 17. ServletAuthentication schwach() -Methode in Weblogic zurückkehren 9.2.3 immer falsch Wert
- 18. Aktion Methode Param ist immer Null
- 19. optarg von getopt() ist immer null
- 20. WPF Dispatcher Invoke Rückgabewert ist immer Null
- 21. komplexe Post-Parameter ist immer null
- 22. PendingIntent von getBuyIntent zurückgegeben ist immer Null
- 23. Warum ist meine NSNummer immer Null?
- 24. GetPhysicalMonitorsFromHMONITOR zurückgegebene Handle ist immer null
- 25. HttpPostedFileBase ist immer Null mit Teilansicht
- 26. NSURL URLWithString die URL ist immer null
- 27. responseText funktioniert, aber responseXML ist immer null
- 28. Android-Datenbindung mCallback ist immer null
- 29. Safari Erweiterung Companion ist immer Null
- 30. MongoDB aggregat groupby ID ist immer null
Danke für die Formulierung Ihrer Frage als ein Problem mit "schwach". Löste mein Problem sofort! – phatmann