hình ảnh đầu tiên đang sử dụng self.name để thay đổi và hình ảnh thứ hai sử dụng _name to change.it phải là kết quả tương tự, nhưng kết quả thứ hai không có kết quả gì.why?Sự khác biệt giữa self.variable và _variable, về KVO
đây là mã
#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");
}
sự khác biệt là self.name
và _name
trong phương pháp thay đổi
Edit: nó không phải là cùng một câu hỏi như "Điều gì là sự khác biệt giữa _variable & self.vari có thể trong Objective-C? [trùng lặp] ", tôi biết đó là về phương pháp getter và phương pháp setter, và câu hỏi của tôi là tại sao phương thức setter bắn KVO và _name = @"b"
không bắn KVO.
Vui lòng đăng mã dưới dạng văn bản chứ không phải ảnh chụp màn hình xcode. Văn bản dễ dàng hơn để cắt/dán và làm việc khác. – seand
Arun, tôi nghĩ đó là một câu hỏi khác. –
bằng cách sử dụng '_name' bạn đang bỏ qua kvo – user2829759