ChenYilong / ChenYilong/iOSInterviewQuestions

关于第5题:如何重写带 copy 关键字的 setter

Open
#95 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Swift
Stars
9.5k
Forks
2.8k
PR merge metrics
No merged PRs in 30d

Description

这里苹果使用
if (_name != name) {
//[_name release];//MRC
_name = [name copy];
}

这样的写法是有原因的
由于大部分对象的引用是strong,因此某个对象的属性可能被引用了很多地方,然后在回到当前的位置赋值,并不是简单的self.x = self.x的情况
其次,大型对象的copy是十分耗费资源的动作,因此在这种情况下加了判断,能够节约不少资源
再次,除了一些特殊的小型对像copy是假copy,其余的都要进行真copy的动作,如果这样的话,一个if判断的消耗,远远小于一个copy动作的消耗

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.