일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- breakpoint
- Swift
- weak
- 순환참조
- UISheetPresentationController
- ios
- keychain
- RenderingMode
- 회고
- Sync
- 회고록
- xcode
- UIImage
- Async
- ReactorKit
- regex
- 광주소프트웨어마이스터고등학교
- GOMS
- DI
- pop
- Protocol
- unowned
- UIKit
- Clean Architecture
- 정규식
- MVVM
- Today
- Total
목록iOS (11)
minaje

글에 들어가며 프로젝트를 하다보니 어드민 계정일때 UIImage의 색상을 변경해야하는 상황이 생겼다. 그래서 처음에는 이미지를 따로 만들어서 바꿔 끼우는 형식으로 했었는데 너무 비효율적이라는 생각이 들어 이미지 자체의 색을 바꾸는 방법을 찾아보니 UIImage RenderingMode라는 기능이 있어서 공부하게 되었습니다! UIImage RenderingMode란? UIImage의 색상 값을 결정하는 것이다. automatic: 컨텍스트의 기본 모드를 선택하며 지정해주지 않을 경우 디폴트 값 사용(보통 alwaysOriginal) alwaysOriginal: 원본 Image 색상 사용 alwaysTemplate: 원본 Image 색상을 제거 후 지정한 tintColor로 변경 코드 예시 let examp..

개요 오늘은 DI - Dendency Injection! 단어만 들었을 때는 아주 무섭죠..! 하지만 객체지향을 한다면 자주 사용하고 꼭 알아야하는 녀석이죠. Dendency?? Dependency 즉! 의존성이란? 객체 지향 프로그래밍에서 서로 다른 객체 사이에 의존관계가 있다는 것을 말한다! 말이 어려우니까 풀어서 설명하자면 A 객체가 B 객체를 의존한다고 가정해보자! 이때 B 객체가 수정이 되면 A 객체까지 영향을 받는 것이다! 이것이 의존성이다. 자 코드로 살펴보자 import UIKit struct Study { func swift() { print("스위프트") } func kotlin() { print("코틀린") } } struct Minaje { var todayStudy: Study f..

전 포스팅에서 메모리 누수, 순환참조에 대해서 공부를 해봤으니 이번 포스팅은 메모리 누수를 방지하는 방법을 알아보자! Weak Weak를 사용하여 강한 참조가 아닌 약한 참조를 만들어 메모리 누수를 방지할 수 있다! class TestClass{ weak var testClass: TestClass? = nil // 약한 참조 init(){ print("init") } deinit(){ print("deinit") } } var testClass1: TestClass? = TestClass() var testClass2: TestClass? = TestClass() testClass1?.testClass = testClass2 testClass2?.testClass = testClass1 testClas..

Swift의 메모리 관리 Retain Cycle(순환참조)을 살펴보기 전에 Swift의 메모리 관리에 대해 알아야한다! 다행히도 ARC (Auto Reference Counting)는 대부분의 메모리 관리를 자동으로 해줍니다! 자! 그러면 ARC가 어떤 원리인지 알아봅시다. ARC의 원리 기본적으로 클래스의 객체를 가르키는 각각의 reference는 강한 참조입니다! 그리고 최소 하나의 강한 참조가 있는 이상 객체는 메모리에서 해제되지않습니다. class TestClass { init() { print("init") } deinit() { print("deinit") } } var testClass: TestClass? = TestClass() testClass = nil 자 이렇게 그림을 보면 test..

글을 시작하며 우선.. 정규식에 대한 글을 쓰게 된 이유는 코딩테스트에서 정규식 문제가 나와서.. 제대로 못 풀었기 때문에 다시 공부하게 되었다.. 🥹 Swift의 정규식 Swift에서 \ (역 슬래쉬)는 연산자 역할을 하므로, \ 를 문자 자체로 사용하고 싶을 때는 \\ 이렇게 두 개로 사용해야한다! 문자열 일부가 일치하는 지 확인하는 방법! (첫 번째로 일치하는 지) let regex = "[0-9]" let check = "abcdefg".range(of: regex, options: .regularExpression) != nil // 출력 값 : false 이렇게 문자 일부가 일치하는 지 확인할 수 있다. 문자 범위는`[]` (대 괄호)를 사용한다. 문자열 전체가 일치하는 지 확인하는 법! le..

Regex? 코드를 짜다보면 항상 어려웠던 부분 중 하나가 정규식을 짜는 것이다. 기존에 정규식을 만드는 여러가지 방법도 있지만 (Ex - range, NSPredicate, NSRegularExpression 등..) 너무 어려운 관계로 다음 글에... 오늘은! iOS 16이후에 나온 Regex에 대해 알아보자! Regex를 만드는 여러가지 방법 String으로 만들기 let regex = try Regex(#"정규식"#) //이 패턴을 사용하면 String에 따로 escaping 문자를 작성 안 해도 된다. / /로 나타내기 / / 안에 정규식을 작성하면 컴파일러가 알아서 Regex타입으로 변환해준다. let regex = /정규식/ // 이 패턴을 WWDC에서는 Regex Literal라고 부른다...

글을 시작하며 오늘도 iOS 로드맵을 보던 중 Concurrent Programming을 보았다. Concurrent Programming을 검색해보니 동기 / 비동기란 단어가 상당히 많이 나왔다. 동기.. 비동기.. 음.. 무슨 말일까..! 고민을 하다가 한 번 공부해 보기로 했다! 동기 / 비동기 일단 간단히 말하자면 처리해야 할 일이 a, b, c, d가 있다고 치자. 이 일들을 1번 Thread에서 처리하고 있었는데 이것을 분산처리 시키고 싶을 때 동기는 a를 2번 Thread에 보내고 a가 끝날때까지 그 뒤에 일(b)을 처리하지 않는 것이다. 이를 그림으로 간단히 보면 이렇게 된다. 비동기는 a를 2번 Thread에 보내고 a가 끝나는 것을 기다리지 않고, 그 뒤에 일(b)을 처리하는 것이다. ..

IOS 로드맵을 살펴보다 보면 POP(Protocol Oriented Programming) 즉 프로토콜 지향 프로그래밍이 나온다. 그러면 여기서 나오는 프로토콜이란 무엇일까? 한 번 알아보도록 하자! Protocol이 뭐야? POP를 공부하기 앞서 반드시 알아야하는 Protocol에 대해 알아보자 공식문서를 살펴보면 프로토콜은 특정 작업이나 기능에 적합한 메서드, 속성 및 기타 요구사항에 대한 청사진을 정의합니다. 어... 이게.. 무슨 말이지.. 싶지만! 쉽게 말하자면 요구 사항에 필요한 프로퍼티나 메서드를 미리 선언해두는 추상적인 친구 정도가 되겠네요! Protocol 선언 방법 프로토콜은 class, sturct, enum과 비슷하게 선언할 수 있다. protocol ExampleProtocol..