반응형

sysout 252

[Swift] 문법 다시보기 - 구조체와 클래스의 차이

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다. 구조체와 클래스의 차이 같은점 값을 저장하기 위해 프로퍼티를 정의할 수 있다 기능 실행을 위해 메서드를 정의할 수 있다 서브스크립트 문법을 통해 구조체 또는 클래스가 갖는 값(프로퍼티)에 접근하도록 서브스크립트를 정의할 수 있다 초기화될 때의 상태를 지정하기 위해 이니셜라이저를 정의할 수 있다 초기구현과 더불어 새로운 기능 추가를 위해 익스텐션을 통해 확장할 수 있다 특정 기능을 실행하기 위해 특정 프로토콜을 준수할 수 있다 다른점 구조체는 상속할 수 없다 타입캐스팅은 클래스의 인스턴스에만 허용된다 디이셜라이저는 클래스의 인스턴스에만 활용할 수 있다 참조 횟수 계산(RC)은 클래스의 인스턴스에만 적용된다 값 타입과 참조 타입 구조체는 값 ..

Programming/Swift 2021.10.12

[Swift] 문법 다시보기 - 함수

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다. 함수 일급객체, 하나의 데이터 타입으로 사용할 수 있음 각 함수는 매개변수 타입과 반환 타입으로 구성된 하나의 타입으로 사용(정의)할 수 있다는 뜻 어떤 상황에서 유용하게 사용할 수 있을지 고민! 함수의 전달인자로 값을 전달할 때는 보통 값을 복사해서 전달한다 값이 아닌 참조를 전달하려면 입출력 매개변수(inout)를 사용한다 var numbers: [Int] = [1, 2, 3] func nonReferenceParameter(_ arr: [Int]) { var copiedArr: [Int] = arr copiedArr[1] = 1 } func referenceParameter(_ arr: inout [Int]) { arr[1] = 1 ..

Programming/Swift 2021.10.11

[Swift] 문법 다시보기 - Switch

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다. Switch fallthrough case 연속 실행 where 조건 확장 (ex: case "사원" where 연차 > 5;) default 한정된 범위의 값을 입력 값으로 받게될 때 값에 대응하는 각 case를 구현한다면 default는 구현하지 않아도 된다. 그렇지 않다면 default는 필수 예제 : case deafult, case _ unknown 열거형에 새로운 case가 추가되었을 때 논리적 오류가 발생할 수 있는 여지가 있음 이런 문제를 방지하기 위한 속성 예제 : @unknown case _

Programming/Swift 2021.10.10

[Swift] 문법다시보기 - 열거형

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다. 열거형 연관된 항목들을 묶어서 표현할 수 있는 타입 프로그래머가 정의해준 항목 값 외에는 추가/수정 불가 연관 값 스위프트의 열거형 각 항목이 연관 값을 가지게 되면 기존 프로그래밍 언어의 공용체 형태를 띌 수도 있다. 열거형 내의 항목(case)이 자신과 연관된 값을 가질 수 있다. 연관 값은 각 항목 옆에 소괄호로 묶어 표현할 수 있다. // ex. 연관 값을 갖는 열거형 enum MainDish { case pasta(taste: String) case pizza(dough: String, topping: String) case chiken(withSource: Bool) case rice } var dinner: MainDish =..

Programming/Swift 2021.10.10

[Golang] 연산자

연산자 연산자란? 특정한 작업을 위해 사용하는 기호를 가리킵니다 대입연산자, 산술연산자, 비교연산자, 논리연산자 등이 존재합니다 대입연산자 대입연산자는 앞에서 이미 다루었습니다 = 와 := 이 바로 대입연산자에 해당합니다 산술연산자 수학적인 계산에 사용되는 연산자 +, -, *, /, %, ++, — 산술 연산 후 대입을 축약할 수 있습니다 +=, -=, *=, /=, %= 산술연산 주의점 - 산술연산은 같은 자료형끼리만 가능합니다 다른 자료형과의 연산을 하려면 자료형을 변환하면 됩니다 var num3 int = 10 var num4 float32 = 2.5 fmt.Println(num3 - num4) // error fmt.Println(float32(num3) - num4)) // 결과: 7.5 fm..

Programming/Golang 2021.10.09

[iOS] Clean Architecture, 내 생각

Clean Architecture 아래 글의 원문은 엉클밥의 블로그입니다. 엉클밥 (로버트 C 마틴) - https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html 도움되는 Reference 갓제드 - https://zeddios.tistory.com/1065 곰튀김 - https://www.youtube.com/watch?v=jVyA5DV6r8w 클린 아키텍처에 대해 정리해보자 이 글은 유명한 로버트 C 마틴 (엉클밥)이 제안한 아키텍처이다. 엉클밥은 그동한 개발하면서 많은 아키텍처를 보았는데 이들 세부사항은 다르지만 서로 유사성을 가지고 있다. 아키텍처들의 동일한 목표는 관심사 분리이다. 이를 위해 소프트웨어를 계층(lay..

Programming/iOS 2021.10.09

[iOS] MVVM Pattern

MVVM Pattern MVVM M : Model → Data V : View (ViewController) → Presentation Logic 위치 VM : ViewModel → Business Logic 위치, UI 관련 코드는 존재하지 않음 (→ import UIKit ❌ ) 조금 풀어서 설명해보면 뷰 모델은 모델을 알지만 모델은 뷰 모델을 알지 못한다. 뷰는 뷰 모델을 알지만 뷰 모델은 뷰를 알지 못한다. → 결국, UI와 Presentation Logic, Business Logic을 분리하고자 하는 게 MVVM 아키텍처라 할 수 있다. 그래서 MVVM Pattern으로 작성된 프로그램은 명확한 테스트가 가능하다. 실제로 프로젝트에 적용해보니.. 최근 회사에서 프로젝트를 리팩토링할 수 있는 기..

Programming/iOS 2021.10.08

[iOS] MVC Pattern

MVC iOS의 MVC는 왜 문제가 되는가? 먼저, 일반적인 MVC 패턴을 살펴보자. M : Model V : View C : Controller 사용자가 화면을 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 된다. UI와 Business Logic을 분리할 수 있는 패턴이기 때문에 잘 사용한 MVC 패턴은 쉽게 변경할 수 있는 프로젝트가 된다. 그럼 Apple의 MVC를 한번 보자. 아래 링크로 이동하면 그림이 하나 나오는 데 위와 비슷한 그림이다. 정말 iOS에서 그림과 같은 개발이 가능할까? Model-View-Controller 현실 Apple's MVC (Mass..

Programming/iOS 2021.10.07

[iOS/Swift] didFinishLaunchingWithOptions 알아보기, 푸시로 앱 실행할 때 처리하기

didFinishLaunchingWithOptions 푸시를 클릭한 것과 같이 앱이 시작한 이유를 찾아 원하는 동작대로 하려면 어떻게 해야할까? 오늘 푸시 관련 기능을 추가하다가 앱이 완전 종료된 상태(메모리에도 없음)에서 푸시를 클릭하여 앱을 실행한 경우 원하는 페이지로 이동하지 않는 것을 확인하였다. 푸시 클릭으로 앱이 실행되었을 때를 기준으로 앱이 시작될 때 원하는 동작을 하려면 어떻게 해야하는지 확인해보고자한다. 1. didFinishLaunchingWithOptions https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622921-application 프로젝트 생성 시 기본으로 들어가있는 AppDelegate 클래스에 ..

Programming/iOS 2021.10.06
728x90
반응형