Ich habe eine designbezogene Frage.
Ich habe gesehen, dass die UIApplication-Klasse diese Art von Flags hat:
%Vor%und auf der anderen Seite deklariert die Klasse UITableView Strukturen wie:
%Vor%Einer ist für Benachrichtigungen und der andere definiert Arten von Objekten. Ich glaube, dass diese zwei Design-Optionen sind, um einige verwandte Objekte zu "markieren" und basierend auf diesem Flag Dezitionen zu erstellen.
Nehmen wir an, ich möchte eine Fabrik von Objekten erstellen, die markiert werden müssen. Im folgenden Bild möchte ich Aufzählungen oder IDs für jeden Abschnitt und jedes Widget anzeigen. Wie würde ein Widget ein anderes kommunizieren oder "aufrufen"? e.j. [[Container sharedInstance] presentWidget: ?? forSection: ?? withInfo: (id) info];
Gibt es einen tieferen oder genaueren Grund, einen von ihnen zu wählen? Danke für deine Hilfe.
Eine enum-Deklaration ist nicht eine Struktur, die Syntax ist ähnlich, aber sie definiert einfach eine Reihe von benannten Zahlen.
Diese Konstanten beziehen sich auf zwei verschiedene Arten von Datentypen, String vs numerisch.
Die benannten Konstanten in UIApplications sind Zeiger auf NSString Objekte , sie haben einen Pointer-Wert und es gibt auch eine String-Konstante, auf die sie zeigen (in der .m-Datei). So wie deklarieren Sie einige String-Konstanten wie diese (außer sie sind extern und die Definition ist anderswo abgeschlossen):
%Vor%Die benannten Konstanten in UITableViewScrollPosition sind Namen, die an ganze -Werte übergeben werden. So ähnlich wie:
%Vor%Der Grund für die Verwendung einer enum (benannte Zahlen) in einem Fall ist, dass sie alle möglichen Werte gegenüber der String-Konstante definieren, die sie einige der Werte definieren, aber es ist für Benutzer möglich, andere zu definieren. Mit String-Konstanten könnten verschiedene Bibliotheken ihre eigenen definieren, ohne die Möglichkeit doppelter String-Adressen, während die Definition von Erweiterungen von Enumerationen Kollisionen zwischen verschiedenen Bibliotheken haben könnte, wenn sie denselben Integer-Wert definieren, um unterschiedliche Bedeutungen zu haben.
klingt wie Sie benötigen eine Enum-Eigenschaft für das Objekt. so object.UITableViewScrollPosition
Wenn Sie Konstanten in Ihrer Klasse deklarieren, können Sie diese für ein bestimmtes Objekt nicht ändern.
Tags und Links objective-c ios design-patterns