2016-06-20 14 views
0

Wird einer dieser Codes dazu führen, dass der Block dauerhaft im Speicher zugewiesen wird? Ich meine, eine Referenz innerhalb des Blocks zum starken Spinner draußen?Wird dadurch der Block undicht?

UIActivityIndicatorView *spinner = (UIActivityIndicatorView *)[cell viewWithTag:1]; 

[[NSOperationQueue mainQueue] addOperationWithBlock:^{ 
    [spinner startAnimating]; 
}]; 

oder

UIActivityIndicatorView *spinner = (UIActivityIndicatorView *)[cell viewWithTag:1]; 

[self.queue addOperationWithBlock:^{ 
    [spinner startAnimating]; 
}]; 

Antwort

0

Nein wird es nicht. Der Spinner gehört zu seiner Superansicht. Der variable Spinner ist vermutlich eine lokale Variable. Sobald er den Gültigkeitsbereich verlässt, hört er auf, den Spinner beizubehalten. Ebenso wird der Block einmal ausgeführt und dann gestoppt, sodass der Kreisel nach dem Beenden nicht mehr beibehalten wird.

+0

aber vorausgesetzt, der Spinner wurde in dieser Zeile zugewiesen, würde es lecken, nicht wahr? Ach, ich dachte anders herum ... der Spinner hielt den Block. –

Verwandte Themen