뭐라도하는봉
close
프로필 배경
프로필 로고

뭐라도하는봉

  • 분류 전체보기 (55)
    • Retrospect (15)
    • I'm Domain (1)
    • I'm Tech (0)
    • Personal Study (0)
    • Apple Developer Acadamy (0)
    • iOS (38)
      • Swift (19)
      • SwiftUI (4)
      • UIKit (14)
    • Developer (1)
    • CS (0)
  • 홈
  • 태그
  • 방명록
[iOS/UIKit] RxSwift 용어정리

[iOS/UIKit] RxSwift 용어정리

RxSwift를 학습하다보니 새로운 단어들이 너무 많아서 머릿속에서 정리가 잘 안됐었다. RxSwift의 개념이나, 더 정리할 내용이 있는 단어에 대해선 필요하다면 별도의 글을 작성하고,이번 글에서는  RxSwift의 핵심적인 단어들을 중심으로 한눈에 정리해보겠다. Observable과 Observaer`Observable`이벤트를 발생시키는 역할버튼을 탭하거나, 텍스트필드에 텍스트를 작성하는 등의 행위`Observer`구독이라는 행위로 `Observable`을 계속 관찰하고 있음`Observable`을 통해 신호를 받으면 즉, 이벤트가 전달되면 해당 이벤트를 처리하는 역할버튼을 눌렀을 때 화면 전환이 되도록 이벤트를 처리하는 등의 행위Observaer의 이벤트 처리방식(onNext, onComplete..

  • format_list_bulleted iOS/UIKit
  • · 2025. 2. 20.
  • textsms
[iOS/Swift] MVVM의 한계에 대한 고찰 - Massive View Model 해결법

[iOS/Swift] MVVM의 한계에 대한 고찰 - Massive View Model 해결법

기존의 MVC패턴의 한계를 극복하고자 MVP, 그리고 MVVM 패턴이 등장하게 되었다. MVC의 한계와 MVVM이 탄생한 이유는 여러가지가 있을 수 있겠으나, 대표적으로 다음의 이유들이 있었다.View와 Business logic간의 긴밀한 연관성에 의해 확장성, 유지보수에 어려움을 겪음추가로 View가 Model에 영향을 줄 수 있기 때문에, 터치 이상으로 복잡한 소통을 해야 할 경우 프로토콜 등을 통해 Controller에 책임을 위임함ViewController의 역할이 많아지면서 Controller가 비대해지는 Massive View Controller의 문제가 발생 이 외에도 여러 이유가 있을 수 있겠지만, 어쨌든 MVVM이 등장한 가장 핵심 이유는"View와 Model의 의존성 분리"라고 생각한..

  • format_list_bulleted iOS/Swift
  • · 2025. 2. 11.
  • textsms
[iOS/UIKit] View Hierarchy 디버깅 팁

[iOS/UIKit] View Hierarchy 디버깅 팁

영화 프로젝트를 만들던 도중 예상치 못한 오류가 발생했다.메인 뷰에서 다른 뷰로 갔다가 다시 돌아올 때 다음과 같은 오류가 떴다.현재 메인뷰는 3개의 tableView cell안에 각각 collectionView 가 있는 형태로 구성되어있다. 에러메세지를 번역기에 돌려보니 다음과 같았다.한 번만 경고: UITableView가 뷰 계층에 포함되지 않은 상태에서(테이블 뷰 또는 그 하위 뷰 중 하나가 아직 창에 추가되지 않음) 가시적인 셀 및 기타 내용을 레이아웃하도록 요청받았습니다. 이는 테이블 뷰 내부의 뷰가 올바른 정보를 알지 못한 상태에서 로드 및 레이아웃을 수행하도록 강제할 수 있으며(예: 테이블 뷰 경계, 기기 방향 모음, 레이아웃 마진, 안전 영역 인셋 등), 불필요한 레이아웃 연산이 추가로 발..

  • format_list_bulleted iOS/UIKit
  • · 2025. 2. 2.
  • textsms
[iOS/UIKit] 프로젝트 트러블슈팅

[iOS/UIKit] 프로젝트 트러블슈팅

이번 글에서는 앱을 만드는 프로젝트 과정에서 발생한 문제와 해결과정에 대해 작성할 예정이다.프로젝트 내용은 TMDB API를 이용해 영화에 대한 데이터를 관리할 수 있는 앱을 만드는 것이다.해당 프로젝트를 개발하면서 해결하는데 가장 시간이 오래 걸렸거나, 새로운 개념을 알게되었거나, 기본적인 개념이었는데 실제 개발시 적용하지 못해서 아쉬웠었던 사례 5가지를 소개할 예정이다.물론 내가 해결한 방법이 정답은 아닐 수 있지만, 어떤한 생각의 흐름으로 해결을 했는지를 위주로 다뤄보려고 한다.Push로 이동했을 때 View의 비정상적 동작문제프로필 설정화면에서 선택된 이미지를 프로필 이미지 선택뷰로 넘기면서 push로 화면전환을 하는 과정에서 화면이 버벅거리는 문제가 발생// ProfileSettingViewCo..

  • format_list_bulleted iOS/UIKit
  • · 2025. 1. 28.
  • textsms
[iOS/Swift] WMO와 Method Dispatch - class에 final을 붙이는 진짜 이유

[iOS/Swift] WMO와 Method Dispatch - class에 final을 붙이는 진짜 이유

일반적으로 더이상 상속되지 않을 class 앞에 `final`이라는 키워드를 붙이곤 한다.그렇게 하면 이 class는 더이상 상속되지 않을걸 알기에, 시스템의 입장에서 재정의를 위한 일련의 과정을 수행하지 않아도 되기 때문에 성능상에 이점이 있다고 알고 있었다. 그런데, 위의 문장으로는 뭔가 설명이 조금 부족해보인다.이번 글에서는 WMO와 Method Dispatch에 대한 설명과 함께 `final`을 붙이는 진짜 이유에 대해 알아보도록 하겠다.WMO: 전체 모듈 최적화xcode에 여러 개의 swift파일이 존재할 때 빌드를 하면, Swift는 각 파일을 개별적으로 컴파일한다.그런데 사실상 각각의 파일이 개별적으로 존재하는 경우는 잘 없다. 그러니까, 각 파일은 내부적으로 서로 연관이 있는 경우가 일반적..

  • format_list_bulleted iOS/Swift
  • · 2025. 1. 25.
  • textsms
[iOS/UIKit] @objc와 #selector - 커스텀뷰에 addTarget을 하면 안되는 이유

[iOS/UIKit] @objc와 #selector - 커스텀뷰에 addTarget을 하면 안되는 이유

UIKit에서 커스텀뷰를 만들어서 작업하는 도중에, 반복작업을 더 줄이기 위해 `addTarget()` 메서드도 커스텀뷰 안에 만들고 싶어졌다.그런데 예상한것과 다르게 제대로 동작하지 않았고, 그 이유가 궁금해져서 찾아본 결과를 정리해보도록 하겠다.UIKit의 커스텀뷰UIKit에서 반복되는 뷰를 편리하게 관리하기 위해 커스텀뷰를 만들곤 한다.예를 들어 다음과 같은 화면이 있다고 하면 각 버튼의 UI를 하나씩 전부 구성하는게 아니라, 하나의 커스텀뷰를 만들어서 일부분만 변경하여 사용할 수 있다. UIButton을 상속하는 커스텀버튼 클래스를 만들고, 버튼을 생성할때 UIButton이 아닌, 방금 만든 커스텀버튼을 타입으로 지정해주면 된다.// 커스텀버튼 클래스class SortButton: UIButton..

  • format_list_bulleted iOS/UIKit
  • · 2025. 1. 15.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (55)
    • Retrospect (15)
    • I'm Domain (1)
    • I'm Tech (0)
    • Personal Study (0)
    • Apple Developer Acadamy (0)
    • iOS (38)
      • Swift (19)
      • SwiftUI (4)
      • UIKit (14)
    • Developer (1)
    • CS (0)
최근 글
인기 글
최근 댓글
태그
  • #UIKit
  • #MC1
  • #SwiftUI
  • #MC2
  • #RxSwift
  • #Swift
  • #MVVM
  • #Apple Developer Academy @ POSTECH
  • #ios
  • #애플 디벨로퍼 아카데미
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바