覆盖Objective-c中的setter.为什么检查是相等的参数

Geo*_*rge 2 objective-c getter-setter

经常找到这样的自定义setter sintaxis:

- (void)setParentCatalog:(Catalog *)parentCatalog {
    if (_parentCatalog != parentCatalog) { //???
        _parentCatalog = parentCatalog;
        [self refresh];
    }
}
Run Code Online (Sandbox Code Playgroud)

我为什么要检查?

if (_parentCatalog != parentCatalog)
Run Code Online (Sandbox Code Playgroud)

Ano*_*dya 5

这将检查如果两个_parentCatalogparentCatalog都指向同一个内存位置.

如果两者都是同一个对象,则无需设置objectValue.