Cześć, jak wiadomo, każdy interfejs ma pole RefCount. Jeśli jego wartość spadnie do zera, interfejs jest zwalniany. I tu pojawia się mój problem. Mam aplikację opartą o pluginy i 2 interfejsy. Jeden jest używany w aplikacji głównej do wywoływania metod w pluginie(A), a drugi jest używany w pluginie do wywoływania metod w aplikacji głównej(B)(metody w stylu: savelog, logError, etc).
I teraz tak, w momencie gdy aplikacja odłącza plugin, automatycznie spada RefCount interfejsu B. I teraz nie mogę podłączyć innego pluginu(bez restartu aplikacji), ponieważ RefCount spada do zera i interfejs jest zwalniany. W jego miejsce w pamięci wchodzą inne rzeczy.
Obszedłem to w taki sposób, że po stworzeniu obiektu implementującego interfejs B, wywołuję na nim _AddRef. I to właściwie załatwia sprawę. Tylko wszędzie piszą, żeby nie wywoływać _AddRef. Więc moje pytanie jest takie: Czy mogę tak to zostawić, czy lepiej zamiast wywołać _AddRef zrobić jakieś "sztuczne przyrównanie"? Oczywiście wiem, że w przypadku _AddRef, powinienem zrobić _Release przed zwolnieniem obiektu(mam tu na myśli przyrównanie nil do obiektu).