pierwszy obraz używa self.name do zmiany, a drugi obraz za pomocą _name do zmiany.it powinien być taki sam wynik, ale drugi nic nie daje. Dlaczego?Różnica między self.variable i _variable, o KVO
oto kod
#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");
}
różnica jest self.name
i _name
w metodzie zmiany
Edit: to nie to samo pytanie, „Co to jest różnica między _variable & self.vari w stanie w Objective-C? [duplicate] ", wiem, że chodzi o metodę gettera i metodę setera, a moje pytanie brzmi, dlaczego metoda setera wywołuje KVO, a _name = @"b"
nie wywołuje KVO.
Proszę zaksięgować kod jako tekst, a nie zrzut ekranu xcode. Tekst jest łatwiejszy do wycinania/wklejania i w inny sposób można z nim pracować. – seand
Arun, myślę, że to kolejne pytanie. –
używając '_name' omijasz kvo – user2829759