고민과 경험을 기록으로 남기기 위한 글.
계속 업데이트 될 것.
struct, class의 차이는 알고 있지만,
특정 상황에 둘중 무엇을 택해야 할지는 항상 고민 임.
기본적으로 애플의 권장사항 동의. 하지만 디테일한 내용이 더 있으면 좋을것 같다..
immutable 구현이 필요할땐, struct로 가자.
struct 가 더 안전하다.
class로 멀티스레딩을 구현하려면, 적절한 lock을 구현해야한다.
struct안에 레퍼런스 타입의 프로퍼티가 있는 경우, 레퍼런스 수에 비례하여 레퍼런스 카운팅 오버헤드를 지불한다.
둘 이상의 레퍼런스가 있는경우, class보다 레퍼런스 카운팅 오버헤드가 더 많이 유지된다.
→ 이 경우 class로 만드는게 더 낫다!!!
String은 contents를 Heap에 저장한다. → 레퍼런스 카운트를 계산해야한다.
참고
이런 레퍼런스들을 줄이면서 최적화를 할 수 있다.
String을 다른 Struct타입으로 바꿔라!! Enum 적극 사용!!