gpt4 book ai didi

ios - self.variable 和 _variable 的区别,关于 KVO

转载 作者:搜寻专家 更新时间:2023-10-30 22:13:06 24 4
gpt4 key购买 nike

<分区>

第一张图是用self.name改的,第二张图是用_name改的,应该是一样的结果,但是第二张什么都不输出,为什么?

enter image description here

enter image description here

这是代码

#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");
}

区别在于改变方法中的self.name_name

编辑:这与“Objective-C 中的 _variable 和 self.variable 之间有什么区别?”不是同一个问题,我知道这是关于 getter 方法和 setter 方法,我的问题是为什么 setter 方法触发 KVO 而 _name = @"b" 不触发 KVO。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com