Objective-C KVO Dois-je implémenter manuellement willchange/didChange dans la méthode set ?
漂亮男人
漂亮男人 2017-05-02 09:27:56
0
2
562

Par exemple ?

- (void)setNow:(NSDate *)aDate {
    [self willChangeValueForKey:@"now"];
    _now = aDate;
    [self didChangeValueForKey:@"now"];
}

Ou directement

- (void)setNow:(NSDate *)aDate {
    
    _now = aDate;
    //自动调用 willChange didChange方法?
}

2 Si vous utilisez le runtime pour ajouter un attribut dans une catégorie, et si vous devez utiliser KVO, devez-vous utiliser ces deux méthodes manuellement ?

-(void)setStr:(NSString *)str  
{  //这里需要手动使用 willChange didChange么?
    objc_setAssociatedObject(self, & strKey, str, OBJC_ASSOCIATION_COPY);  
}  
漂亮男人
漂亮男人

répondre à tous(2)
我想大声告诉你

Si l'ancienne valeur et la nouvelle valeur sont différentes, vous devez envoyer une notification manuelle. Les objets associés ne peuvent pas synthétiser les méthodes setter, et les méthodes setter doivent être fournies par le programmeur. Lorsque nous utilisons cet attribut, le runtime détecte que nous avons implémenté le setter et ne remplacera pas cette méthode, la notification ne peut donc pas être émise. Cette notification doit donc également être envoyée manuellement

刘奇

Il doit être écrit manuellement et ne sera pas appelé automatiquement.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal