iOS
-
[Swift] - 배열 루프를 순회하는 방식(enumerated,indices,Range(0..<arr.count))iOS/SWIFT 2025. 3. 20. 20:29
팀원들과 코드리뷰를 하던 중 모두 배열 루프를 돌리는 방식의 차이가 모두 다르다는 것을 깨달았다.기능적으로는 모두 같은 결과가 나오는 코드를 작성할 수는 있지만, 난 항상 이런 동일한 결과가 나오는 코드는 성능적인 차이가 있을까에 대한 고민을 많이 하는 편이다. 제목처럼 오늘은 배열 루프를 돌리는 방식(enumerated(),indices,Range(0..arr.count)에 대해서 하나씩 살펴볼 것이다. 1.Range(0..arr.count) 이렇게 보면 뭔가 어색하지만 이 방식은 다음과 같이 표현한다.let arr = ["a", "b", "c"]for i in 0..기본적으로 swift에서 for문을 돌리는 정석적인 방법이다. 직관적이나, 개발자가 직접 숫자로 범위를 조작하기 때문에 작성을 실수할 ..
-
[Swift] - Character와 EGC(Extended Grapheme Cluster)iOS/SWIFT 2025. 3. 14. 11:26
학습을 하다 알게된 점이 생겨 급하게 포스팅을 한다.과제로 코드를 작성하다가 문득 이런 생각이 들었다.Character는 거의 사용해본적이 없는데 무슨 용도일까? 이 의문을 해결하기 위해 Character를 처음부터 조사하기 시작했다. 바로 본론으로 가보자let text = "ㅁㄴㅇㄹ"let chars: [Character] = Array(text) //["ㅁ", "ㄴ", "ㅇ", "ㄹ"] "ㅁㄴㅇㄹ"은 4개의 한글 자음으로 구성된 문자열이고, 개별 문자(Character)들은 각각 하나의 유니코드 스칼라로 표현된다.Array(text)를 호출하면 Swift는 String을 Character 배열로 분리한다. 자 여기서 유니코드 스칼라가 뭐냐 유니코드 스칼라 (Unicode Scalar) U+0000 ~..
-
[UIKit] - Tabbar 커스텀하기iOS/UIkit 2025. 3. 12. 15:39
오늘은 팀프로젝트를 하다가 생겼던 이슈들과 해결방법을 경험을 바탕으로 서술할 것이다.먼저 Tabbar 부분이다. 기존 폼을 그대로 사용하되, 원하는 대로 커스텀을 하고 싶었다. 여기서 커스텀할 부분은 다음과 같다.원본이미지를 Tabbar item으로 사용해당 탭 선택 시 선택 안된 탭들은 투명처리탭바의 높이해결한 순과 쉬웠던 순?으로 정리한 것이다. 1. 원본이미지를 Tabbar item으로 사용 이 부분은 쉬웠다 단순하게 옵션을 선택해줬다.해당 이미지를 홈 화면의 탭 아이템으로 쓰려고 했다.그런데 막상 다음과 같이 구현을 하니homeView.tabBarItem = UITabBarItem(title: "홈", image: UIImage(named:"Home"),tag: 0) ?? 이렇게 나왔다. 뭔가 t..
-
[iOS] - CoreML, CreateML이란?iOS/iOS 2025. 2. 28. 17:41
오늘은 새프로젝트를 하기 위해 머신러닝 관련 기술을 찾아보던 중 알게 된 내용에 대해서 포스팅해 보겠다. Core ML이란? Apple에서 제공하는 머신러닝 프레임워크로, iOS, MacOS 등과 같은 Apple 플랫폼에서 머신 학습 모델을 손쉽게 사용하고 실행할 수 있도록 지원한다. 한마디로 애플용 머신러닝학습 kit이라고 생각하면 편할 것 같다. CoreML의 기능은 다음과 같다.모델 통합 용이TensorFlow, Keras, Caffe, scikit-learn 등에서 학습된 모델을 Core ML 형식으로 변환하여 사용할 수 있음변환 작업은 CoreML Tools라는 도구를 사용실시간 예측CoreML은 로컬에서 실행되며, 이를 통해 실시간 예측을 제공함(예를 들어 AVRKit으로 카메라를 연동해 실시..
-
[iOS] - 참조 타입이 힙에 저장되는 원리(메모리&CPU 관점에서)iOS/iOS 2025. 2. 15. 11:35
스터디를 하다보니 구조체와 클래스에 대한 생각을 다시 하게 되었다.그 중 참조 타입이 힙에 저장되는 원리를 메모리와 CPU관점에서 상세하게 과정이 갑자기 궁금해져서 정의를 명확히 하고자 다시 조사를 하기 시작했다. 일단 힙과 스택에 개념에 대해서 다시 정의해보자. 1. 힙(Heap)과 스택(Stack)의 개념 힙(Heap) 메모리 • 동적 할당 메모리 영역으로, 런타임에 크기가 결정되는 데이터가 저장됨. • class 같은 참조 타입 객체는 힙에 저장되며, 여러 참조 변수가 같은 객체를 가리킬 수 있음. • 명시적으로 deinit되거나, ARC에 의해 더 이상 참조되지 않을 때 해제됨. 스택(Stack) 메모리 • LIFO 구조로 함수 호출과 지역 변수(값 타입인 struct, enum, let 및 va..
-
[iOS] - protocol을 사용하는 이유iOS/iOS 2024. 8. 31. 17:34
저번 포스팅에 이어서 protocol에 대한 내용을 포스팅 해보려고 한다. protocol를 사용하는 이유 swift는 다중 상속을 지원하지 않는다. 일단 상속이라는 개념이 클래스 외에는 지원하지 않는다.클래스는 한 클래스당 하나의 부모클래스만을 가질 수 있는데, 프로토콜을 다중 채택이 가능하기 때문에 다중 상속을 대체할 수 있다. 한가지 예시로 SceneDelegate파일을 파보자이 클래스는 UIkit 프로젝트를 생성하면 기본적으로 생성되는 클래스다.보면 SceneDelegate는 UIResponser, UIWindowSceneDelegate 두가지를 가지고 있다.여기서 UIResponder는 이벤트에 응답하고 처리하기 위한 추상 인터페이스 클래스이다. 우리는 이로써 두가지를 알 수 있다. 1. Sce..
-
[iOS] - protocol이란?iOS/iOS 2024. 8. 31. 16:30
오늘은 protocol에 대한 내용을 포스팅 해보려고 한다. protocol 프로토콜이란 특정 작업이나 기능에 맞는 메서드, 속성 및 기타 요구 사항의 청사진을 의미 - swift는 프로토콜 지향 프로그래밍으로 객체 지향 프로그래밍에서의 상속보다 더 유연하고 확장 가능한 방식으로 코드를 구조화하는 것을 목표로 한다.- 프로토콜은 구조체 ,열거형 ,클래스 등에서 채택되어 사용될 수 있다. 정의로는 항상 선뜻 이해하기가 어렵다.예시를 한번 들어보자. 만약 철수,영희라는 사람에 대한 클래스를 정의한다고 하자.class 철수{}class 영희{} 둘은 인간이라는 공통된 범주를 가지고 있고, 인간이 가지고 있는 인간의 특성에 대한 청사진을 만드려고 한다.한번 프로토콜로 만들어보자.protocol Person{ ..
-
[Xcode] - info.plist가 누락되었을 때iOS/Xcode 2024. 8. 5. 21:22
오늘은 inf.oplist를 수정해야하는데 프로젝트 내부에 파일이 존재하지 않을때 해결방법을 포스팅해보겠다. 누락 이유 조사해본 결과 Xcode13이상 버전에서는 plist가 프로젝트 빌드파일로 흡수되어 프로젝트를 생성할 때 파일로 생성되지 않는다고 한다.근데, 나같은 경우 http통신을 허용하기 위해 plist를 수정해야할 일이 생겼다. 자세하게 보려면 이 곳을 참고하자https://developer.apple.com/documentation/xcode-release-notes/xcode-13-release-notes Xcode 13 Release Notes | Apple Developer DocumentationUpdate your apps to use new features, and test yo..