본문 바로가기

전체 글140

[Swift] 추상화 추상화(Abstraction)는 객체 지향 프로그래밍의 중요한 개념 중 하나이다. 구체적인 구현 세부 사항은 숨기고, 사용자에게는 필요한 기능만을 제공하는 방식으로 설계되어 시스템의 복잡성을 줄이고 본질에 집중할 수 있게 해준다. 목적추상화는 시스템의 복잡성을 숨겨 단순화시켜 사용자가 이해하기 쉽게 만드는 것이다. 사용자는 내부 구현을 알 필요 없이 상위 개념만을 이용할 수 있다. 즉, 구체적인 기능을 숨기고 상위 계층에서 쉽게 사용할 수 있게 하는 것이다.추상화를 활용하게되면 아래와 같은 효과를 얻을 수 있다.코드 재사용성 향상 : 추상화를 통해 공통 로직을 묶어 여러 클래스에서 재사용할 수 있다.유지보수성 향상 : 추상화된 코드는 개별 구현부와 독립적이므로, 특정 구현부를 수정해도 다른 부분에 영향을.. 2024. 9. 15.
[iOS] Simultaneous accesses 오류 Simultaneous accesses ~ but modification requires exclusive access.Struct 타입을 만들어 이용하는 과정에서 위와 같은 경고가 발생하며 작동이 멈췄다. 원인과 해결 방법에 대해 알아보고자 한다.  해당 오류는 Swift의 메모리 관리 시스템이 객체에 대한 동시 접근(Simultaneous Access)을 감지할 때 발생하는 문제이다. 즉, 동시에 두 개 이상의 부분에서 값을 읽거나 수정하려고 할 때 발생하며, 특히 값 타입인 struct에서 자주 볼 수 있다. 특히 mutating 메서드가 실행 중일 때, 동일한 객체에 다른 읽기 또는 쓰기 접근이 동시에 일어나면 충돌이 발생할 수 있다고 한다. 아래 내용은 Swift 문서의 Memory Safe 부.. 2024. 9. 8.
[Swift] 프로토콜 Swift에서 프로토콜(Protocols)은 객체 지향 프로그래밍의 기본이 되는 중요한 개념으로, 프로토콜을 사용하면 클래스, 구조체, 열거형이 특정 역할을 수행하기 위해 따라야 하는 메서드, 속성, 기타 요구 사항을 정의할 수 있다.  프로토콜(Protocol)프로토콜은 특정 역할을 수행하기 위해 필요한 메서드와 속성의 청사진을 정의하는 것을 말한다. 프로토콜 자체는 실제 구현을 포함하지 않으며, 단지 특정 기능을 제공하기 위해 어떤 메서드와 속성이 필요한지를 명시한다.프로토콜의 기본 문법프로토콜은 protocol 키워드를 사용하여 정의되며 아래와 같은 예시처럼 사용 가능하다.protocol Describable { var description: String { get } func descr.. 2024. 8. 28.
[네부캠] 베이직 과정 회고 2주간의 베이직 과정을 무사히 끝냈다..!후기를 통해 다양한 경험을 공유할 수 있기를 바라는 네부캠의 작은 미션에 따라베이직 회고를 작성해 본다. 네부캠 쏘 친절,,🫶   부스트 캠프는 5년, 10년 뒤에 지금보다 더 상장한 지속 가능한 개발자가 될 수 있도록 하는것을 목표로 두고 있으며 성장하는 사람들을 위한 베이스 캠프로, 여러 동료들과 함께 공유하며 학습할 수 있는 커뮤니티이다. 여태까지 개인적으로, 혹은 소수로만 개발 스터디와 프로젝트를 경험했었다. 그로 인해 다양한 코드와 개발자 교류 경험이 부족하다고 느낀적이 여럿 있기도 했었다. 그래서 여러 사람들과 함께 학습하고 교류할 수 있다는 점이 매력적으로 느껴졌고, 무엇보다 지속 가능한 개발자라는 키워드가 와닿아 네부캠에 도전해보게 되었다.  이번.. 2024. 7. 14.