2016-06-03 8 views
0

In meinem VC ich einen benutzerdefinierten Delegaten Eigenschaft erklärt haben:individuelle Setter-Methode für die Delegierten wird unendlich oft genannt

@interface VC2 : BaseVC 
@property (nonatomic,weak) id<VC2Delegate> delegate; 
@end 

und von VC1, Ich gründe dieses Delegierten:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if ([[segue identifier] isEqualToString: @"VC2"]) { 
     self.VC2 = [segue destinationViewController]; 
     [self.VC2 setDelegate:self]; 
    } 
    } 

und in mein VC2, ich habe eine Setter-Methode für die Delegierten geschrieben:

-(void)setDelegate:(id)del{ 
    self.delegate=del; 
} 

die Frage nach dem pprepareForSegue Methodenaufruf in VC1, die se Die Tter-Methode für Delegate in VC2 wird so oft aufgerufen und meine Apps werden abgestürzt. Ich bin mir nicht sicher, was der Grund sein könnte. Hier

ist der satcktrace:

enter image description here

enter image description here

Ich habe keine Umsetzung meiner BaseVC. Es ist nur ein einfacher VC.

Antwort

2

hier ist dein Problem selb.delegate ist eigentlich ein Setter, deshalb hast du Radfahren. Sie sollten _delegate = del innerhalb Ihres Setter verwenden.

4

Wenn Sie mit self.delegate auf Ihre Immobilie zugreifen, rufen Sie den Getter tatsächlich an. Versuchen Sie es auf die Instanz-Variable als solche Einstellung:

-(void)setDelegate:(id)del{ 
    _delegate=del; 
} 
2

Sie nicht Setter-Methode erforderlich, da Sie direkt wie Delegierten festlegen,

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
if ([[segue identifier] isEqualToString: @"VC2"]) { 
    self.VC2 = [segue destinationViewController]; 
    self.VC2.delegate = self; 
} 
} 

Sie müssen nur delegieren Eigenschaft in .h-Datei von VC2 erklären .

Sie Immobilien in VC2.h nehmen können wie,

@property ViewController *delagate; 

Viewconroller sind Sie VC von Weichen Sie prepareForSegue fordern und Einstellung Delegierten

+0

ich das vorher, aber die Delegierten wurden nil in VC2 nach Ich führe einige Operationen durch. Also wollte ich wissen, was den Delegierten zu Null macht. Daher habe ich die Setter-Methode ausprobiert. –

+0

Überprüfen Sie mein Update in Antwort – Lion

+0

brauchen wir den starken Typ für Delegierte? Ich habe gehört, dass wir den Delegierten nur schwach geben! –