Tutaj moja deklaracja sygnał:Usuwanie obiektów wysyła sygnały, własności obiektów w sygnały, Qt
signals:
void mySignal(MyClass *);
A jak używam go:
MyClass *myObject=new myClass();
emit mySignal(myObject);
Nadchodzi mój problem: Kto jest odpowiedzialny za usunięcie myObject:
Kod nadawcy, co jeśli zostanie usunięty przed użyciem myObject? Zwisający wskaźnik
Gniazdo podłączone do sygnału, co jeśli nie ma gniazda lub więcej niż jednego gniazda, które jest podłączone do sygnału? Wyciek pamięci lub zwisający wskaźnik
W jaki sposób Qt radzi sobie z tą sytuacją w sygnałach wbudowanych? Czy używa wewnętrznego liczenia odwołań?
Jakie są Twoje najlepsze praktyki?
wyciek pamięci: gdy MyClass * myObject wykracza poza zakres i gniazdo nie jest podłączone. zwisający wskaźnik: jeden z gniazd usuwa obiekt, a jest więcej niż jedno gniazdo. – metdos
QPointer jest teraz moim wyborem! dzięki! – Brent81