知识卡片
结构体与类的选择依据
内容
苹果官方给出的经验法则是:当被描述的数据只由少量简单值组成、传递时理应被复制、其所有 属性本身也适合复制语义、且不需要继承另一个类型时,优先用结构体;反之——需要共享同一份 可变状态、需要继承体系、或者数据结构复杂到复制代价明显时——才用类。这与常见的”面向对象 默认用类”直觉相反,本质是先问”这份数据的多个持有者之间应不应该互相影响”,答案是”不应该” 就选[[值类型与引用类型的本质区别|值类型]]。发散:这条准则背后是对可变共享状态的警惕—— 一份数据被多处引用又被多处修改,是很多难以复现 bug 的根源,结构体从传递机制上就切断了 这种意外共享的可能性。
参考来源
《Swift 4从零到精通iOS开发》第7章《类与结构体》