값 타입에 대한 글을 읽다가 CoW에 대해 언급하는 걸 봤어요 사실 이전에도 종종 들었는데 흠 이런게 있군... 하고 넘겼거든요 이번에는 뭔지 한 번 확인해보겠습니다 🩵 Copy on Write 수정 가능한 리소스에 대한 복사 작업을 효율적으로 구현하기 위해 사용되는 리소스 관리 기술 사전적 정의를 보고 있으면 뭔소리임? 싶지만 생각보다 단순하더라구요 아주 큰 Value Type 유형을 전부 복사한다고 가정해볼게요 이런 경우 아마도 데이터의 크기만큼 거대한 리소스가 들어갈 겁니다 "모든 데이터"를 "복사"해야 하기 때문이죠 이런 불상사를 막기 위해서 값 타입이어도 변경이 일어나지 않았다면 단순히 원본 데이터를 참조만 하고 있다가 값이 변경되는 시점에 메모리를 복사한 다음, 수정한다는 소리입니다 좀 더 깔..
iOS
static하면 어떤게 떠오르시나요 저는 tableView의 identifier 설정하는 게 떠오르네요... 아니면 싱글톤? 어쨌든 여러곳에 사용할 수 있는 좋은 키워드죠 🩵 Static 인스턴스가 아니라 타입 자체에 속하게 될 메서드, 프로퍼티 등을 선언하기 위해서 사용합니다 Static으로 선언된 메서드와 프로퍼티는 인스턴스를 생성하지 않아도 그냥 접근해서 사용할 수 있어요 구조체, 열거형, 클래스 전부 다요! 🩵 특징 ✔️ 타입 속성 + 타입 메서드 static 키워드를 통해서 선언하면 모든 인스턴스가 공유하는 값이 됩니다 예를 들어 원주율을 제공하는 프로퍼티와과 사각형의 넓이를 구하는 메소드를 제공해주는 구조체가 있다고 해 볼까요? 위에서 설명했듯이 어떠한 인스턴스에 속하는 것이 아니라 타입 그 ..
프로젝트를 1차적으로 완성하고 실제 기기로 빌드를 돌려서 테스트하려는데 이게 웬걸 빌드가 안되는겁니다!! 엄청나게 많은 이슈가 있었지만 그 중 핵심이었던 몇가지를 가져왔어요 Bundle Identifier가 이미 다른 계정에 의해 사용 중 /Users/t2023-m0035/Desktop/todwoong/ToDwoong/ToDwoong.xcodeproj Failed Registering Bundle Identifier: The app identifier "com.yenny42.ToDwoong" cannot be registered to your development team because it is not available. Change your bundle identifier to a unique str..
2024.03.06 - [iOS/SWIFT] - [Swift]Unit Test (1) 코드 테스트의 원칙 2024.03.07 - [iOS/SWIFT] - [Swift] Unit Test (2) 유닛 테스트 시작하기 이번에는 유닛테스트를 위해 타겟을 추가하고 설정하는 법에 대해 알아볼게요 생각보다 간단하더군요 🩵 Test 타겟 생성 어디서든 타겟 생성하는 창으로 들어가시면 됩니다ㅎㅎ 1번 방법 2번 방법 3번 방법 Unit Testing Bundle 이라는 걸 추가해주시면 테스트폴더가 하나 자동으로 생길 거에요 만약 처음부터 테스트 코드 작성을 염두에 두고 프로젝트를 만든다면? Include Tests를 체크하고 해주시면 됩니다ㅎㅎ 🩵 타겟과 번들? 유닛 테스트 타겟(Unit Test Target) 특정..
2024.03.06 - [iOS/SWIFT] - [Swift]Unit Test (1) 코드 테스트의 원칙 2024.03.07 - [iOS/SWIFT] - [Swift] Unit Test (2) 유닛 테스트 시작하기 테스트 코드라는 거 많이 들어보셨죠? Integration Test, UI Test, Unit Test, End-to-End Test... 등등 그 중에 유닛 테스트, 단위 테스트란 무엇일까요? 사용하려는 개별 기능이 개발자의 의도에 맞게 동작하는지 작은 단위로 테스트 하는 것을 의미합니다! 단위 테스트는 보통 이런 과정을 거쳐 작성합니다 테스트 대상을 선택하기 테스트 케이스를 작성하기 테스트 실행하기 예상한 결과와 테스트 실행 결과가 일치하는지 확인하기 위의 1-4를 반복! 개발자는 이런 ..
열거형 Enum은 한정된 범위에서 가능한 값(케이스)를 정의하기 위해 사용하는 타입입니다 특히 스위프트의 열거형은 단순히 값의 목록을 나타내는 걸 넘어선 강력한 기능을 제공한다고 하는데요 코드의 가독성, 안전성, 유지보수성을 크게 향상시킬 수 있다고도 하네요 특히 "타입 안정성"을 보장한다고도 하는데요.. 타입 안정성이라는 건 뭘까요? 🩵 타입 안정성 "타입 안정성을 보장한다" 라는 표현은 프로그램이 실행되는 동안에 타입에 대한 오류가 발생하지 않도록 하는 것을 의미합니다 개발자가 작성한 코드가, 시스템이 예상한 타입의 데이터만을 사용하도록 강제하여 런타임에 발생할 수 있는 타입 관련 오류를 최소화 해주는 것이죠 예를 들면, 정수형 타입 변수에 문자열을 할당하려고 하는 경우 타입 안정성을 지원한다면 컴파..
최근 애플리케이션에서 "알림"이라는 기능이 없는 앱.. 혹시 보셨나요? 전 못본 것 같아요 아주 간단한 투두 어플도 푸시 알림을 보내주더군요... iOS 환경에서 개발자는 두가지 종류의 알림을 보내줄 수 있어요 서버에서 원격으로 알림을 생성하여 APNs(Apple 푸시 알림 서비스)가 기기에 전달해주는 방법, 로컬에서 알림 콘텐츠를 생성하고 트리거(조건)에 맞게 알림을 띄워주는 방법이 있습니다 사실 이런 알람을 설정하기 전, 반드시 해야하는 작업이 있죠? 네... 사용자 기기에 알림을 보낼 수 있게 권한 허용받기 이게 설정되지 않으면 어떤 방식도 쓸 수 없어요!!!!! 요거 허용받는 설정과 관련된 부분을 간단히 적어볼게요 🩵 NotificationCenter NotificationCenter 하면 어떤게..
팀플 작업중, 버튼으로는 도저히 CollectionView cell 크기를 동적으로 변경하기가 어렵다는 연락을 받았습니다 이 부분을 위해 버튼을 열심히 구현했던 저는 슬픔에 빠졌었죠.. (10초 정도) 다시 생각해보니 저는 이걸 구현하는 방법을 알고 있어요 저는 다이나믹하게 동작하는 ui를 제법 좋아하기 때문에 공부하면서 찾아본 적이 있었기 때문이죠 직접 구현한 적은 없었지만.. 지금 하면 되는 거 아님? 🩵 동적 Cell 크기 계산의 장점셀의 크기를 콘텐츠의 크기에 기반해서 결정하면 다양한 크기의 콘텐츠를 유연하게 표시할 수 있습니다! 이런 유연한 콘텐츠는 앱의 UI를 조금 더 풍부하고 상호작용적인 느낌으로 만들어줘요 콘텐츠에 기반한 셀 크기는 사용자에게 뭔가 "맞춤형"이라는 느낌을 주고 각각의 콘텐츠..
2024.02.23 - [iOS/SWIFT] - [Swift] iOS 커스텀 프레임워크 생성하고 사용하기 2024.02.26 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (1) 2024.02.27 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (2) UIKit SnapKit으로 비교하기 2024.02.29 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (3) 접근제한자 프레임워크와 라이브러리를 개발하거나 사용할 때, 접근제한자는 아주 중요한 역할을 해요 이 접근제한자를 어떻게 사용하느냐에 따라서 만들어둔 프레임워크/라이브러리의 사용 가능 범위가 달라진답니다!! 🩵접근제한자 open 클래스, 클래스의 멤버에서만 사용 가능 open으로 선언된 클래..
2024.02.23 - [iOS/SWIFT] - [Swift] iOS 커스텀 프레임워크 생성하고 사용하기 2024.02.26 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (1) 2024.02.27 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (2) UIKit SnapKit으로 비교하기 2024.02.29 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (3) 접근제한자 프레임워크는 앱의 구조와 실행 흐름을 정의하며 이렇게 정의된 틀 안에서 개발합니다 라이브러리는 특정한 기능을 수행하는 코드의 집합이에요 iOS개발을 하다보면 가장 많이 접하게되는 프레임워크 중 대표적으로 UIKit, Foundation이 있고 라이브러리로는 SnapKit, The..
2024.02.23 - [iOS/SWIFT] - [Swift] iOS 커스텀 프레임워크 생성하고 사용하기 2024.02.26 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (1) 2024.02.27 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (2) UIKit SnapKit으로 비교하기 2024.02.29 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (3) 접근제한자 프레임워크와 라이브러리. 개발을 공부하고 있다면 아마 공부 시작 3일만에도 들어볼 수 있는 단어라고 생각해요 그 만큼 많은 사람이 사용하고, 언급하고, 만들어지고 있죠? 🩵 프레임워크? 앱의 기본적인 구조와 실행 흐름을 정의하는 골조(뼈대) 정의된 이 틀 안에서 개발할 수 있다 ..
2024.02.23 - [iOS/SWIFT] - [Swift] iOS 커스텀 프레임워크 생성하고 사용하기 2024.02.26 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (1) 2024.02.27 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (2) UIKit SnapKit으로 비교하기 2024.02.29 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (3) 접근제한자 커스텀 프레임워크는 코드의 재사용성을 높이고 앱 개발을 효율적으로 할 수 있게 해줍니다 이렇게 속성, 메서드를 하나로 묶어서 외부로부터의 직접적 접근을 제한 + 객체의 메서드를 통해서만 변경할 수있게 하는 것을 객체지향의 캡슐화 라고 하는데요! 코드를 기능/논리적 단위로 분해해서..