0

J'ai une méthode simple montrant AlertView avec textfield. Les instruments montrant une fuite de mémoire dans ceci. S'il vous plaît, expliquez.iOS ARC UIAlertView fuite de mémoire

- (void)method { 
NSString *value = [[NSUserDefaults standardUserDefaults] valueForKey:@"key"]; 
if (value == nil) { 

    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Title" message:@"message" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 

    alertView.tag = 101; 
    alertView.alertViewStyle = UIAlertViewStylePlainTextInput; 
    UITextField *txtGroup = [alertView textFieldAtIndex:0]; 
    [txtGroup becomeFirstResponder]; 

    [alertView show]; 
    alertView = nil; 
} 
} 

S'il vous plaît trouver la capture d'écran des instruments: enter image description here

+0

Pourquoi faites-vous alertView = nul? après avoir montré? –

+0

J'ai lu quelque part, pour libérer un objet, il doit être réglé à zéro après utilisation. – PK86

+0

De là, http://blog.harbinger-systems.com/2014/04/ios-memory-management-and-arc/ – PK86

Répondre

0

Vous devez créer alertView comme:

static UIAlertView *alertView = nil; 

if (!alertView){ 
    alertView = [[UIAlertView alloc] initWithTitle:@"Title" message:@"message" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
} 
+0

Pourquoi UIAlertView est-il statique? – PK86

+0

car lorsque vous appelez cette méthode, alertview crée une nouvelle instance. – KKRocks

+0

vous pouvez déclaré global alertiview au lieu de statique. – KKRocks