- Memory Leak을 찾아보자 실전편(1)2료일이전글에서 weak var을 설명하며 지연된 할당해제에 관해 글을 썼다. 이번엔 실제 내 프로젝트를 보며 어디서 메모리 릭이 발생하는지 찾아보자.가장 먼저 edit Scheme에서 Malloc Scribble과 Malloc Stack Logging을 켜주었다.Malloc Scribble(메모리 오버라이드 감지)Malloc Scribble은 동적 메모리 할당 시 메모리를 더미값으로 초기화하고, 해제 전까지 해당 메모리 공간에 예상치 못한 쓰기 작업이 발생하는지 감지하는 디버깅 기능. 이를 통해 초기화되지 않은 메모리에 접근하거나, 이미 해제된 메모리를 사용하는 문제를 파악할 수 있다.동작 원리• 동적 메모리 할당 시, 메모리를 특정 패턴 값으로 채운다 • 일반적으로 0xAA로 초기화.• 메모리를 ..
- 2025-01-14 02:32:19
- 메모리관리(weak self와 guard의 만남)2료일Swift의 ARC(Automatic Reference Counting) 메커니즘을 이해하는 것은 iOS 개발자에게 필수적인 지식입니다. 특히 클로저에서 self를 참조할 때 언제 weak self를 사용해야 하고, 언제 사용하지 않아도 되는지 아는 것은 메모리 누수를 방지하는 핵심입니다. 이 글에서는 실무적인 측면에서 이 개념을 자세히 살펴보겠습니다.강한 참조 순환 vs 지연된 할당 해제1. 강한 참조 순환(Strong Reference Cycle)원인: 두 객체가 서로를 강하게 참조하여 순환 고리가 형성됨결과: 메모리 누수(Memory Leak) - 객체가 영원히 해제되지 않음해결책: weak 또는 unowned 참조 사용2. 지연된 할당 해제(Delayed Deallocation)원인: 객체가 클로..
- 2025-01-12 20:27:12
- Hash-Hashable을 곁들인2료일사실 이건 기본중의 기본이다. 이미 알고리즘을 풀며도 사용하고 개발을 할때도 이미 많은 곳에 포함되어있다. 하지만 내 블로그에는 따로 정리를 해놓은 적이 없어 딥다이브로 파고들 생각이다. 자 들어가자해쉬🌞Hashing은 임의의 각각 크기를 가진 입력 데이터를 고정 크기의 값으로 변환하는 과정으로, 이를 해시 함수(Hash Function)가 담당한다. 이 과정에서 생성된 출력값은 해시 값(Hash Value) 또는 해시 코드(Hash Code)라고 한다원본 데이터인 키값을 저 hash function을 통해 64 bit의 int형으로 변환한 것을 확인 할 수 있다. 일반 적으로 키 값이 동일하면 해쉬결과값도 동일하게 나온다. Hash Function를 통해 어떠한 값이 들어오건 정해진 자료내의 결과값으..
- 2025-01-05 16:01:27
- 마케팅 앱스토어 노출하기2료일https://developer.apple.com/kr/videos/play/tech-talks/110358/ 앱 노출 및 마케팅 시작하기 - Tech Talks - 비디오 - Apple DeveloperApp Store에서 앱의 노출을 향상시키는 방법에 대해 알아보십시오. 사용자가 App Store에서 앱을 발견하는 다양한 경로를 살펴보고 앱의 노출도를 높일 수 있는 방법을 알려드립니다. 최고의 제품 페developer.apple.comhttps://apps.apple.com/kr/app/%EB%B3%BC%EB%A0%88%EB%98%90/id6737753864 볼레또1. 티켓으로 꾸미는 특별한 여행 기록 - 일반적인 일기 형식이 아닌, 티켓을 형상화한 독특한 기록 방식을 제공합니다. 티켓에는 출발지..
- 2025-01-04 20:56:00
- 22968-균형(swift풀이)2료일https://www.acmicpc.net/problem/22968문제를 해석하는게 어려웠다. 그래서 나와같은 어려움이 있는 사람들을 위해 정리하자면..정점의 개수가 주어질때 해당 정점으로 만들수 있는 AVL Tree의 최대 높이를 구하자는 것이다. AVL Tree = 왼쪽과 오른쪽 노드의 층 차이가 1층보다 크면 안됨. 결국 같은 층이거나 1층차이이여만 한다. 맨 오른쪽의 예제를 보면 1과 10이 2층차이난다. 그냥 이렇게 해석하면 끝!딱 보자마자 아 이거 규칙이 있겟구나 생각을 하며 점을 찍어보았다.1로 그래프를 찍었을때 딱 저 부분이 킥이다. 저 1이 생기는 순간 한층을 더 아래로 내릴 수 있다. 왜냐? 1층차이니까!! 완전이진트리가 될 필요가 없다.그러므로 조금 더 규칙을 구하기 위해 경우를 좀 ..
- 2024-12-26 13:25:46
- Alamofire error code handling2료일현재 내가 개발중인 앱 볼레또에서는 에러코드핸들링을 오로지 401 즉 토큰 만료될때에만 final class RequestTokenInterceptor: RequestInterceptor { func adapt(_ urlRequest: URLRequest, for session: Session, completion: @escaping (Result) -> Void) { guard let accessToken = KeyChainManager.shared.read(key: .accessToken) else { return } var urlRequest = urlRequest urlRequest.setValue("Bearer " + a..
- 2024-12-17 07:44:55
- Preference Key2료일PreferenceKey는 하위 뷰에서 상위 뷰로 데이터를 전달하기 위한 메커니즘입니다. 일반적으로 SwiftUI는 데이터가 상위 뷰에서 하위 뷰로 전달되는 구조를 따르지만, PreferenceKey는 그 반대 흐름을 가능하게 해줍니다.PreferenceKey의 주요 구성 요소PreferenceKey는 다음과 같이 세 가지 주요 요소로 이루어집니다:키 등록: PreferenceKey 프로토콜 준수 및 타입 정의값 송신: 하위 뷰에서 preference 메소드를 통해 값 전달값 수신: 상위 뷰에서 onPreferenceChange 메소드를 통해 값 수신PreferenceKey 프로토콜 구조SwiftUI에서 PreferenceKey는 아래와 같은 프로토콜로 정의됩니다.public protocol Prefer..
- 2024-11-25 18:23:54
- 산모양타일링 - swift2료일https://school.programmers.co.kr/learn/courses/30/lessons/258705 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제분석n이 주어지면 밑변이 n+1로 깔림. 그리고 tops 배열에 따라 위에 삼각형이 있는지 없는지 결정된다. 1이면 위에 있는거고 0이면 없는거고 즉 위의 이미지는 일부러 짤랏지만 [0,1]이겟쥬? 그런데 삼각형 2개로 이루어진 사다리꼴과 삼각형 1개로 배치해서 가득 채우는 경우를 10007로 나누라고 한다.문제접근에? 이렇게 큰 수로 나눠? 이건 DP네~! 자 여기까지 감을 잡았다. // 그런데 기존의 DP와 다른게 n도 달라질수 ..
- 2024-11-15 17:06:21
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)