콩벌레 개발자의 개발 공부 노트
close
프로필 배경
프로필 로고

콩벌레 개발자의 개발 공부 노트

    • 분류 전체보기 (233)
      • 일상 (7)
        • 일상 이야기 (4)
      • Web (17)
        • Spring Boot (6)
        • CSS (3)
        • HTML (2)
        • JSP (0)
      • R (4)
      • Algorithm (88)
        • 백준 (67)
        • 프로그래머스 (19)
      • ICT COG Academy (8)
        • AI 기본 (8)
      • 계산이론 (6)
      • 데이터 베이스 (1)
      • IOT 네트워크 (1)
      • iOS (63)
        • RxSwift (2)
        • swift (15)
        • 앱 개발 (31)
        • 보안 (1)
        • UIKit (10)
        • SwiftUI (3)
      • 클린 아키텍처 (7)
      • 클린 코드 (3)
      • 컴퓨터 구조 (14)
      • 네트워크 (10)
      • 자료구조 (0)
      • 운영체제 (2)
      • 안드로이드 (0)
      • 개발 (0)
  • mode_edit_outline글작성
  • settings환경설정
  • 홈
  • 태그
  • 방명록
SwiftUI와 Opaque Type, @ViewBuilder

SwiftUI와 Opaque Type, @ViewBuilder

면접 때 받은 질문인데... 머리로는 이해하고 있지만, 막상 입으로 설명하려고 하니 뭐라 설명할지 모르겠어서 이참에 정리해 본다. Opaque Type이란?protocol의 associated type의 타입을 모르는 상태에서 객체의 기능을 사용하는 타입이다. 제네릭의 반대라고 생각하면 편하다. 무슨 소리냐면.. 제네릭을 사용할 때는 구현부에서 어떤 타입을 사용할지 모르는 상태로 구현한다.class Stack { var arr: [T] init(arr: [T]) { self.arr = arr } func input(_ obj: T) { arr.append(obj) }}그 후 사용 및 호출하는 쪽에서 상세한 타입을 지정한다.let stack..

  • format_list_bulleted iOS/SwiftUI
  • · 2024. 5. 10.
  • textsms
OperationQueue을 이용한 UICollectionView 성능 개선

OperationQueue을 이용한 UICollectionView 성능 개선

UIImageView를 extension을 해서 UICollectionViewDelegate의 collectionView(_:cellForItemAt:)이 호출되는 시점에서 cell의 UIImageView에서 이미지를 비동기를 가져오는 작업을 수행(Cell이 이미지를 가져오는 작업을 수행)할 경우 다음과 같은 문제가 발생할 수 있습니다. 셀 재사용으로 인한 이미지 비동기 작업 중첩 View가 이미지 작업에 관한 책임을 가지게 되는 문제 셀 재사용으로 인한 이미지 비동기 작업 중첩 이미지를 가져오는 작업이 완료되기 전에 셀의 재사용으로 인해 이미지를 가져오는 비동기 작업을 계속해서 수행하게 될 경우 셀의 이미지가 중첩된 이미지를 가져오는 비동기 작업이 완료되는 순서대로 바뀌는 문제입니다. View가 이미지..

  • format_list_bulleted iOS/앱 개발
  • · 2024. 4. 10.
  • textsms
Swift String(Array) 성능 최적화

Swift String(Array) 성능 최적화

Array의 메모리 할당 배열은 메모리에서 특정한 영역에 연속적으로 저장됩니다. [1,2,3...]이라는 배열이 있다면 배열의 시작주소부터 연속적으로 요소들이 word단위로 저장됩니다. 1 2 3 4 5 6 이때 배열에 어떤 요소를 추가하면, 다음 주소에 다른 데이터가 저장 되 있을 수 있으므로, 메모리에서 배열을 저장 할 수 있는 공간을 찾아 할당하게 됩니다. 1 2 3 4 5 6 7 Cat 만약 어떤 요소를 추가할때마다, 이같이 메모리의 특정영역에서 저장할 공간을 찾는다면 성능적으로 문제가 있을 수 있습니다. 그래서 Swift에서 배열은 배열보다 더 큰 양의 메모리 공간을 예약합니다. 이때 예약된 공간도 다 사용하게 된다면 현재 배열의 배수의 크기만큼 공간을 찾아 예약을 하게 됩니다. 다만 무조건 배..

  • format_list_bulleted iOS/swift
  • · 2024. 3. 24.
  • textsms
Alamofire의 응답값을 처리하는 여러가지 방법

Alamofire의 응답값을 처리하는 여러가지 방법

Alamofire는 URLSession을 쉽게 사용하게 해 주고 statusCode에 따른 응답 유효성 검사, 응답값 디코딩 등등 여러 가지 편의 기능들을 여럿 지원해 준다. 대표적인 기능으로는 요청을 보낼때마다 공통적인 부분 혹은 로직을 분리해서 재사용할 수 있게 해주는 Interceptor, 요청을 보낼 때 어떻게 작동하고 있는지 Console의 출력을 통해 보여주는 EventMonitor 기능등이 있다. 이러한 기능들은 쉽게 사용할 수 있도록 기본적인 구현이 제공된다. Alamofire에서 기본적으로 구현된것만으로 많은 오픈 API를 대응할 수 있다. 구글링을 통해 Alamofire를 사용하는 코드를 보면 대부분이 이 코드 혹은 이 코드에서 크게 벗어나지 않을 것이다. AF.request("http..

  • format_list_bulleted iOS/앱 개발
  • · 2024. 1. 15.
  • textsms
SafeAreaRegions

SafeAreaRegions

평소에는 뷰의 밑에 붙어 있다가, 키보드가 나오면 키보드의 위에 찰싹 달라 붙어 있는 바를 만드려고했다. UIKit에서는 NotificationCenter로 이벤트를 받아서 직접 frame을 계산하거나 KeyboardLayoutGuideline를 이용해서 constraint를 이용하기에 당연히 swiftUI에도 비스무리한 기능이 있겠거니 해서 하루 죙일 구글링 해봤지만 나오지 않았다. 반포기 상태로 실기기에서 돌려봤는데 딱히 아무것도 하지 않았는데도, 만들어둔 바가 키보드가 나오자 찰싹 달라 붙어서 매우 허탈. 조금 조사해보니 safeArea와 관련된 문제였다. safeArea는 뭔지 알테니 생략하고.. swiftUI에서 보통 ignoreSafeArea()를 통해 View의 위치하는 곳을 조정 할 수 있..

  • format_list_bulleted iOS/SwiftUI
  • · 2023. 12. 29.
  • textsms
API의 response status를 좀 더 구조적으로 핸들링 해보자

API의 response status를 좀 더 구조적으로 핸들링 해보자

이번 새싹 LSLP에서 많은 API를 사용하게 되면서 API마다 response값을 별도로 관리함이 필요하다고 느꼈다. http프로토콜을 이용해 response를 받을 때, statuscode를 이용해 response의 유효성을 검증하고, 응답 에러(사용자가 유효하다고 정의한 response를 제외한 response)를 받을 경우 이를 대응해야 한다. 이를 위해 다음과 같이 필요한 기능을 및 문제를 정의했다. API가 많아 질수록 응답 에러 정의에 어려움과 처리가 어려워짐 응답 에러마다 수행할 작업 정의 (alert로 이벤트 전달, 재시도 등..) alert에 들어갈 description과 title 핸들링 API 응답 에러 정의 및 처리의 어려움 API 양이 많아질수록 이를 한 군데 에서 정의 및 처리..

  • format_list_bulleted iOS/앱 개발
  • · 2023. 12. 24.
  • textsms
  • 1
  • 2
  • 3
  • 4
  • ···
  • 11
공지사항
카테고리
  • 분류 전체보기 (233)
    • 일상 (7)
      • 일상 이야기 (4)
    • Web (17)
      • Spring Boot (6)
      • CSS (3)
      • HTML (2)
      • JSP (0)
    • R (4)
    • Algorithm (88)
      • 백준 (67)
      • 프로그래머스 (19)
    • ICT COG Academy (8)
      • AI 기본 (8)
    • 계산이론 (6)
    • 데이터 베이스 (1)
    • IOT 네트워크 (1)
    • iOS (63)
      • RxSwift (2)
      • swift (15)
      • 앱 개발 (31)
      • 보안 (1)
      • UIKit (10)
      • SwiftUI (3)
    • 클린 아키텍처 (7)
    • 클린 코드 (3)
    • 컴퓨터 구조 (14)
    • 네트워크 (10)
    • 자료구조 (0)
    • 운영체제 (2)
    • 안드로이드 (0)
    • 개발 (0)
최근 글
인기 글
최근 댓글
태그
  • #스탠포드 강의
  • #IOS
  • #앱개발
  • #8기
  • #변경된 점
  • #edwith
  • #uikit
  • #2023
  • #부트캠프
  • #swift
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바