lub dokładniej, (tylko do odczytu, zachowują) pozwala w ten sposób wzór:
Foo.h:
@interface StuffHolder:NSObject
@property(readonly, retain) MyStuff *stuff;
@end
Foo.m:
@interface StuffHolder()
@property(readwrite, retain) MyStuff *stuff;
@end
@implementation StuffHolder
@synthesize stuff;
@end
Wynik końcowy jest właściwość, która jest publicznie odczytywana tylko podczas odczytu wewnątrz implementacji i dla której ustawianie i pobieranie jest automatycznie syntetyzowane przez kompilator.
Ostrzeżenie mógłby być generowane w przypadku braku (ReadWrite, zachowują) nadpisanie w rozszerzeniu klasy - coś podobnego do statement without an effect
- ale byłoby bardziej kłopotliwe niż korzystne. Istnieje również cała masa różnych przypadków skrajnych w kombinacjach, które również uzasadniają ostrzeżenie, ale tak naprawdę nie wskazują na rzeczywisty problem. Podjęto decyzję, aby w dużej mierze zaakceptować różne wzorce bez skargi ze względu na prostotę (ponieważ nie są to problemy z poprawnością).
To nie jest całkowicie głupie; macierz modyfikatorów vs. @synthesize jest taka, że kod gettera ** może ** się zmienić. Próbując wyłuskać dokładnie to, które modyfikatory powinny być możliwe do dodania, a które #warn powinny zawierać szczegółowe informacje i trudne do zrozumienia. Lepiej po prostu iść z "musi być taki sam, z wyjątkiem readonly-> readwrite". – bbum
Wyjaśniłem, że powinienem rozwinąć mój komentarz .... – bbum