/ / Czy istnieje sposób syntezy setterów / getterów dla zmiennych klas w Objective-C? - iPhone, cel-c, klasa

Czy istnieje sposób na syntezę setters / getters dla zmiennych klas w Objective-C? - iphone, cel-c, klasa

Deklaruję kilka zmiennych klasi naprawdę męczące jest pisanie prostych metod get / set dla każdej zmiennej. Pytanie brzmi: jak zsyntetyzować ustawiacze / getter dla zmiennych klas w celu-c?

Odpowiedzi:

4 dla odpowiedzi № 1

Zwykle, gdy grupujesz zestaw powiązanych zmiennych, które mają być dostępne globalnie, tworzysz coś, co nazywa się Singleton:

Jak powinien wyglądać mój singleton Objective-C?

Oznacza to, że masz jedną metodę na poziomie klasy, która daje ci współużytkowaną instancję - więc możesz mieć wywołanie takie jak:

[MyClass sharedInstance].myProperty

Ponieważ przechowywane wartości są prawdziwymi zmiennymi instancji klasy, możesz używać normalnych właściwości, ale wszystkie klasy będą pracować z tymi samymi udostępnionymi danymi.

Zauważ, że niektórzy ludzie nie lubią używania singletonów, możesz przeczytać pewne zastrzeżenia dotyczące tej praktyki:

Singleton: Jak go używać

Ale ponieważ już zaczynasz z jednym nieodłącznymsingleton w rozwoju iPhone'a (delegat aplikacji, do którego każdy może uzyskać dostęp w dowolnym momencie) lekkie korzystanie z tej techniki nie zaszkodzi, jeśli będziesz ostrożny. Zauważ, że zamiast tworzenia klasy Singleton, jedną z alternatyw jest to, aby delegat aplikacji utworzył pojedyncze wystąpienie zmiennej klasy pamięci i miał dostęp do wszystkich za pośrednictwem delegata ...


1 dla odpowiedzi nr 2

coś takiego pojawia się w nagłówku po interfejsie:

@property (retain) NSString* caption;

natychmiast dzieje się to wewnątrz implementacji:

@synthesize caption;

Sprawdź ten samouczek, aby uzyskać więcej informacji: http://www.cocoadevcentral.com/d/learn_objectivec/


0 dla odpowiedzi № 3

Czy nie możesz po prostu makro edytora lub coś takiego?


0 dla odpowiedzi nr 4

Właściwość nie musi odwoływać się do ivar. Możesz mieć dynamiczną właściwość zwracającą zmienną statyczną, jeśli naprawdę chcesz.

Wystarczy użyć @dynamic i zaimplementować getter i setter, aby odwoływać się do zmiennych statycznych z pliku implementacji.