użyciu wzorca weakSelf/strongSelf
uniknąć tworzenia utrzymanie cyklu w blokach, to kod jest bardzo częste:Stosując typeof (samodzielne) w blokach celu C do stwierdzenia, czy wyraźne odniesienie
typeof(self) __weak weakSelf = self;
void (^block)() = ^{
typeof(weakSelf) strongSelf = weakSelf;
// ...more code...
};
Chodzi o to, zmienia drugą wartość, która ma zostać przechwycona w bloku?
Na przykład:
typeof(self) __weak weakSelf = self;
void (^block)() = ^{
typeof(self) strongSelf = weakSelf; // does using typeof(self) here end up capturing self?
// ...more code...
};
Jeśli samo nie jest zrobione, nie ma żadnych powodów, aby preferują jedną lub drugą stronę?
Czy znasz sposób, aby przekonwertować go z powrotem na silny? Próbowałem __strong typeof (weakSelf) strongSelf = weakSelf; i nie zadziałało, zostało zwolnione, ponieważ nadal musi być słabe. Powodem, dla którego pytam, jest to, że nie używam siebie, potrzebuję go do bloku, ale jako obejście mogę po prostu zdefiniować pełny typ. – malhal