das erste Bild verwendet self.name zu ändern, und das zweite Bild mit _name zu change.it sollte das gleiche Ergebnis sein, aber das zweite gibt nothing.why?Unterschied zwischen self.variable und _variable, über KVO
hier ist der Code
#import "ViewController.h"
@interface kvo : NSObject
@property (nonatomic,strong) NSString *name;
@end
@implementation kvo
- (void)change
{
_name = @"b";
}
@end
@interface ViewController()
@property (nonatomic, strong) kvo *a1;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.a1 = [[kvo alloc] init];
_a1.name = @"a";
[self.a1 addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:nil];
[_a1 change];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"1");
}
der Unterschied ist self.name
und _name
im Änderungsverfahren
Edit: es ist nicht die gleiche Frage wie „Was ist Unterschied zwischen _variable & self.vari fähig in Objective-C? [duplizieren] ", ich weiß, das ist über die Getter-Methode und Setter-Methode, und meine Frage ist, dass Setter-Methode feuert die KVO und die _name = @"b"
nicht die KVO.
Bitte Postleitzahl als Text, nicht ein Xcode-Screenshot. Text ist einfacher zu schneiden/einfügen und anderweitig zu bearbeiten. – seand
Arun, ich denke das ist eine andere Frage. –
Mit '_name' umgehen Sie kvo – user2829759