jak używać delegatów z automatycznym zliczaniem referencji

Wskoczyłem na łuk. W przeszłości chciałbym mieć moje właściwości delegata zadeklarowane w ten sposób:

@property(assign) id<MyProtocol> delegate;

Więc pomyślałem, że zrobię to pod ARC:

@property(weak) id<MyProtocol> delegate;
Nie tak. Na oświadczeniu @ synthesize w .m mam błąd kompilacji :

* Problem semantyczny: istniejący ivar 'delegat' dla _ _ słabej własności 'delegat' musi być _ _ słaby*

Uznałem ją za słabą! Również jak przekazać klasę implementującą protokół do słabo odwołanej właściwości. Czy muszę owijać to w jeden z tych dziwnych telefonów obj_unreted?

Każda pomoc w tej sprawie byłaby bardzo mile widziana.
Author: Mike S, 2011-06-30

1 answers

"ivar" oznacza "zmienną instancji", której nie pokazałeś. Założę się, że wygląda to mniej więcej tak:

@interface Foo : NSObject {
    id delegate;
}

@property (weak) id delegate;

Błąd mówi, że musi wyglądać tak:

@interface Foo : NSObject {
    __weak id delegate;
}

@property (weak) id delegate;

Jeśli nieruchomość twierdzi, że jest słaba, ivar, w którym przechowywana jest wartość, musi być również słaby.

 65
Author: tc.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-30 02:01:05