본문 바로가기

TIL

(22)
UserDefault UserDefaultclass UserDefaults : NSObject사용자의 기본 데이터베이스에 대한 Interface앱 실행 시 Key-Value 값으로 데이터를 영구적으로 저장(Filesystem : Library - Preferences)→ 앱이 시작될 때 UserDefaults.plist 파일이 메모리에 로드되기 때문에, 많은 양의 데이터를 UserDefaults에 저장하면 앱 성능이 저하됨Default System(기본 시스템)과 상호 작용→ Default System을 사용하면 앱이 사용자가 지정한 설정에 맞게 동작런타임에 UserDafaults 객체를 사용하여 앱이 Default Database를 캐시하여 사용이때 Preference에 직접 접근은 제한됨→ 사용자가 탐색기 앱을 사용하여 ..
Storyboard 스토리보드 iOS 앱의 사용자 인터페이스를 시각적으로 표현 컨텐츠 화면과 해당 화면간의 연결을 보여줌 Xcode는 스토리보드용 시각적 편집기를 제공함 💛 스토리보드는 일련의 scene들로 구성되어, 각 scene은 ViewController와 View를 나타냄 💛 ViewController간의 화면전환은 Seque 객체로 연결됨 💛 스토리보드를 사용하면 View를 Controller 개체에 연결하고 ViewController간의 데이터 전송을 관리할 수 있음 TRANSLATE with x English Arabic Hebrew Polish Bulgarian Hindi Portuguese Catalan Hmong Daw Romanian Chinese Simplified Hungarian Russian Ch..
Opaque And Boxe Type - 이해용 샘플 코드 protocol Serenable { // Generic은 타입을 지정을 해줘야 사용할 수 있음 associatedtype Element func runRowan() } func whatRetrunType(_ serena: T) -> T { return serena } func whatRetrunType(serenable serena: T) -> any Serenable { // 현재 타입을 모르기때문에 any return serena } func whatReturnType(opaque serena: T) -> some Serenable { return serena } struct Rowan: Serenable { typealias Element = Int func runRowan() { print("로..
Opaque And Boxe Type (2) Boxed Protocol Types there exists a type T such that T conforms to the protocol → Boxed Protocol Types은 **existential Type(존재 타입)**이라고도 불리며, 프로토콜 이름 앞에 any를 붙임 ✏️ 예시 protocol Shape { func draw() -> String } struct VerticalShapes: Shape { // Boxed Protocol Type인 `Shape` 요소의 배열 타입 var shapes: [any Shape] func draw() -> String { return shapes.map { $0.draw() }.joined(separator: "\\n\\n") } } let la..
Opaque And Boxe Type (1) Opaque & Boxed Type의 역할 값의 타입에 대한 자세한 정보를 숨김 → 반환값의 기본 타입이 비공개로 유지될 수 있기 때문에 모듈과 이를 호출하는 코드 사이에 타입 정보를 숨길 수 있음 값의 타입을 숨길 수 있는 방법 Opaque Type - 불투명한 타입 → 타입 식별을 유지하기 때문에 컴파일러는 해당 타입의 정보에 접근할 수 있지만, 모듈의 클라이언트(이를 사용하는 곳)에서는 접근할 수 없음 → 반환하는 함수는 반환값의 타입을 숨기는 대신, 이를 지원하는 Protocol에서 반환값을 설명함 Boxed Protocol Type - 박스형 타입 → 타입 식별을 유지하지 않기 때문에, 값의 타입을 런타임까진 알 수 없으며 다른 값이 저장됨에 따라 변경될 수 있음 → 프로토콜을 준수하는 타입의 ..
UICollectionView UICollectionView 구성 및 커스텀이 가능한 레이아웃의 집합된 뷰들을 보여줌 Cell : 각 컨텐츠의 각 부분에 대한 시각적 요소(item) Layout : 컨텐츠의 시각적 배열을 정의 Data Source 객체 : 데이터를 제공 Delegate 객체 : 컨텐츠와 사용자 간의 선택, 강조 표시와 같은 상호 작용을 관리 CollectionViewController 정렬된 데이터 아이템들을 관리하고, Custom 가능한 레이아웃 사용하여 표시하는 객체 CollectionView는 추가하면 앱의 주요 작업은 CollectionView와 관련 데이터를 관리하는 것 DataSource에서 객체 데이터를 가져온다 UICollectionViewDiffableDataSource를 사용가능하게 됨 UIColl..
MarkDown 접기 계속 찾아보는 나를 위해 복사용 markdown! 접기 내용 summary 아래 한줄 비워야 됨 접기 ```swift ```
SOLID 소프트웨어의 가치 가독성, 커뮤니케이션 개발자는 코드를 통해 의사소통을 함. 읽고 이해할 수 없는 코드는 가치가 없음 단순성 코드는 단순해야 함. → 커뮤니케이션에 도움이 되고, 버그 방지, 미래의 확장 용이 유연성 기존의 코드를 수정하는 데 최대한 적은 시간을 해야 함. → 처음부터 유연성있는 코드를 작성하긴 어렵기 때문에, 이를 위해 많은 경험이 바탕이 되어야 함 어떻게? 처음엔 단순하게 → 기획 또는 정책의 변경이 발생하면 수정 고민해야할 부분 : 이 기획/정책의 변경의 원인은 무엇일지, 이러한 변경이 계속 발생 가능한 일 일지 고려해보기 확장성을 고려한 리팩토링을 진행 왜 가독성, 단순성, 유연성이 중요한 가치인 이유는 무엇일까? 가치는 어떤 기준으로 매기는 걸까? 비용과 이익을 기준으로! 비용이..

728x90