분류 전체보기

    [디자인패턴] - MVC 패턴

    디자인패턴이 뭘까❓ 공통의 문제에 검증된, 정형화된 해결책 건축으로 비유하자면 여러 건축공법이 있다. 한 개의 건물을 짓기 위해 다양한 건축공법을 활용해 다양한 방법으로 지을 수 있다. 그렇듯 코딩에서도 코딩공법?이 있다. 앱의 아키텍처도 여러가지가 있다 예) Singletom패턴, Delegate패턴, MVC, MVVM, MVP... 디자인 패턴이 필요한 이유가 뭘까❓ 결국 앱 하나를 만들기 위해 여러명의 개발자가 하나의 앱을 함께 작업한다. 여러명이 함께 작업할 때 효율적인 유지보수성, 지속적인 기능 개발, 추가와 이를 위한 효율성을 위한 템플릿화가 필요하기 때문이다. 💥 MVC(Model-View-Controller) 디자인패턴 MVC는 Model, View, Controller의 약자이다. 하나의..

    [iOS] - Storyboard 없이 프로젝트 생성하기

    개발자로써 Storyboard없이 UI를 구성할 줄 알아야 한다고 느낀 후 코드로 UI를 작성하는 연습을 하고있다. 그래서 Storyboard 없이 프로젝트를 생성하는 방법에 대해 기록하려고 한다. 1. 프로젝트 생성 2. Main.storyboard 삭제 스토리보드를 삭제❌❌❌한다. 에러가 발생한다 Main스토리보드를 찾을 수 없으니까.. 3. info.plist 수정 1. Storyboard Name을 삭제한다. 2. Main storyboard file base name을 찾아 삭제한다. ⭐️⭐️⭐️ 커맨드(command) + S 프로젝트 저장!! 4. 초기 ViewController(Root)을 지정한다. 파일명: SceneDelegate.swift class SceneDelegate: UIRes..

    [iOS] 화면이동과 데이터전달.

    1. Code Next: 코드로 화면 이동. 다음 화면이 코드로 작성되어 있을때만 가능한 방법 2. StoryBoard with Code 코드로 스토리보드 객체를 생성해서, 화면 이동 버튼 3. StoryBoard with Segue 스토리보드에서의 화면 이동(간접 세그웨이) 버튼 4. Storyboard with Button 스토리보드에서 버튼의 직접 세그웨이 1. Code Next : 코드로 작성한 컨트롤러로 코드를 통해 이동 다음 넘어갈 화면을 스토리보드가 아닌 코드로 작성해놓았다. 다음 화면은 FirstViewController.swift이다. let firstVC = FirstViewController() //코드로 작성한 FirstViewController를 메모리에 올림 firstVC.som..

    [Swift] Final

    문법적 의미 더 이상의 상속을 불가능하게 한다. class 앞에 final이 붙게되면 다른 class에서 상속이 불가능해진다. 프로퍼티 메서드 등에 final이 붙게되면 재정의가 불가능해진다. 성능적 이점 런타임 시기에 성능적 이점을 가질 수 있다. 이를 얻게되는 방식은 Virtual Table을 먼저 알아야하며 Static Dispatch방식과 Dynamic Dispatch의 차이를 알아야한다. https://clamp-coding.tistory.com/364 [Swift]. Method Dispatch Method Dispatch 실제로 Method는 CPU에대한 명령어이며, 실제론 코드 영역에만 존재한다. 그렇기 때문에 코드 영역에 있는 메서드를 실행시키려면 메서드 주소가 필요하다. 그런데 그 메서..

    iOS - 애니메이션효과

    UIView.animate(withDuration: 0.3) { //지속시간 self.stackView.layoutIfNeeded() } stackView내부의 객체가 변화한다면 (오토레이아웃)동적으로 변화하게끔 만들어 애니메이션 효과를 줄 수 있다.

    iOS - Code UI(Auto Layout)

    오토레이아웃 width : 정렬 사각형의 너비 height: 정렬 사각형의 높이 top: 정렬 하각형의 상단 bottn: 정렬 사각형의 하단 Horizontal: 수평 Vertical: 수직 Leading: 리딩, 왼쪽 Trailing: 트레일링, 오른쪽 CenterX: 수평중심 CenterY: 수직중심 Anchor 오토레이아웃을 활용해 어떤 중심을 기준으로 얼마나 띄울건지에 대한 것을 Anchor라고 한다. top = topAnchor / leading = leadingAnchor 높이 = heightAnchor / 넓이 = widthAnchor // leading 얼마를 띄울건지 //상속받은 view의 leading을 기준으로 //30만큼 //활성화 //true emailTextFieldView.le..

    iOS - Network 연결 확인하기(Swift)

    Network 프레임워크를 사용해서 현재 기기의 인터넷 연결 상태와 연결 타입을 알 수 있다. 네트워크 연결을 지속적으로 감지하여 연결이 끊기면 실시간으로 알려준다. 1. NetworkMonitor 클래스 생성 Network 프레임워크를 import하고 네트워크 연결을 감지하는 싱글톤 패턴의 클래스를 별도로 만든다. NWPathMonitor로 현재 네트워크 연결 상태를 확인할 수 있다 // file: NetworkCheck.swift import Foundation import Network final class NetworkCheck{ static let shared = NetworkCheck() private let queue = DispatchQueue.global() private let moni..

    [Swift] @propertyWrapper(프로퍼티 래퍼)

    @Property Wrappers property wrapper는 속성 저장 방법을 관리하는 코드와 속성을 정의하는 코드 사이에 구분 계층을 추가한다. 예를 들어, 쓰레드 안전성 검사를 제공하거나. 자신의 실제 자료를 데이터베이스에 저장하는 속성이 있다면, 모든 속성에 대해 그 코드를 작성해야 한다. 프로퍼티래퍼를 사용할 땐, 래퍼를 한 번 작성하면 여러 속성에 적용함으로써 관리 코드를 재사용한다. 프로퍼티 래퍼를 정의하기 위해 wrappedValue 프로퍼티를 정의한 구조체, 열거형 또는 클래스를 만든다. TwelveOrLess구조체는 래핑하는 값이 항상 12와 같거나 더 작은 숫자가 저장된다는 것을 보장한다. . 더 큰 숫자를 저장하면 12를 대신 저장한다. @propertyWrapper struct..

    [Swift] Properties(속성)

    Stored Properies (저장속성) 가장 단순한 형식의 저장속성은 클래스나 구조체 인스턴스의 일부분인 상수, 변수이다. 저장속성은 var를 사용하면 변수, let을 사용하면 상수 저장속성이다. 저장속성(변수, 상수)은 기본값(default value)를 가질 수 있다. struct FixedLengthRange { var firstValue: Int let length: Int } var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3) // the range represents integer values 0, 1, and 2 rangeOfThreeItems.firstValue = 6 // the range now represents ..

    [UIKit] UISlider

    보호되어 있는 글입니다.