본문 바로가기

iOS 아키텍처 패턴 - Classic MVC iOS 아키텍처 패턴 - Classic MVC 원문 출처 : https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52 우선 기본적으로 MVC, MVP, MVVM와 같이 MV(X) 패턴들은 다음과 같이 3가지 요소로 나뉜다. 일반적인 카테고리 특징은 아래와 같고, 패턴에 따라 조금씩 차이를 보인다. Models - domain data 또는 데이터를 다루는 data access layer를 담당하는 카테고리. - ‘Person’, ‘PersonDataProvider’를 떠올려 보아라. Views - presentation layer (GUI)를 담당하는 카테고리. - iOS 환경에서 접두사 ‘UI’가 붙었던 모든 것을 떠올..
iOS 아키텍처 패턴 - 개요 iOS 앱 아키텍처 패턴 원문 출처 : https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52 iOS Application Architecture Patterns에 대해 다룬다. 종류는 다음과 같다. (링크 타고 들어가세요~!) Classic MVC Apple's MVC MVP MVVM VIPER 아키텍처 패턴을 왜 알아야하고 선택을 고민해야 하나? 아키텍처가 없다면 언젠가 수십가지의 다른 things들을 가지는 거대한 class를 debugging 한다고 할 때, 이 클래스 안에서 어떠한 버그를 찾지도, 고치지도 못하는 자신을 발견할 수 있을 것이다. 이런 거대한 class의 전체 구조를 머리 속에 저장하는 일은 정말..
Swift 열거형 (Enum) Swift 열거형 (Enum) : 변수가 가질 수 있는 값들을 나열해 놓은 타입. : 값의 종류가 일정 범위로 정해져 있는 경우 적합. 열거형 형식 enum 열거형이름{ case 가능값1 case 가능값2 case 가능값3, 가능값4, 가능값5 } 예시 변수가 열거형을 받는 방식은 선언 시 변수명 옆에 : 열거형이름 을 명시하면 된다. var 서울에서거제 : 방향 열거형을 받은 변수는 열거형에 나열된 값만 가질 수 있다. 원시값(raw value) C언어에서는 default로 열거형 자료에 정수형으로 숫자를 부여한다. Swift 에서는 기본적으로 사용하지 않는다. 사용하고자 할 때에는 열거형명 : Int 이렇게 따로 명시해야 한다. : Int를 적어 정수형 rawValue를 사용함을 명시했다. 첫번째 c..
Swift 클로저(Closure) Swift 클로저(Closure) : Swift에서 클로저란 {} 형식의 '코드블럭'이다. 코드 안에서 사용될 수도 있고 매개변수로 전달 될 수도 있다. 클로저 형식 클로저 형식은 위 그림과 같다. 중괄호{} 안에 함수 형식과 유사하게 작성하면 된다. in 문장 안에 코드블럭의 실질적인 내용이 적힌다. 클로저 예시 Int 매개변수를 인자로 받아 단순히 *2 한 값을 반환하는 doubler 함수를 작성하였다. [1,2,3,4,5] 5개의 요소를 가지는 Int형 배열을 선언하고 array.map()의 매개변수로 doubler 함수를 전달하였다. array.map()의 매개변수로 '클로저'로 doubler 함수의 내용을 구현하여 전달하였다. 둘의 결과는 [2, 4, 6, 8, 10]으로 당연하게도 서로 동일하..
Swift 중첩함수 Swift 중첩함수 Swift 는 함수 내부에 또 다른 함수 생성 가능 (중첩함수) 내부의 중첩된 함수는 바깥쪽 함수에 선언된 변수를 사용할 수 있다. (물론 외부함수의 인자에도 접근 가능) 중첩함수의 호출은 함수 내부에서만 가능하다. ==> 내부적으로 은닉 가능. 내부함수는 외부함수가 실행되는 순간 생성되고, 종료되는 순간 소멸된다. 외부함수를 호출했을 때 내부함수를 반환하여 외부에서 사용하는 것도 가능하다. (값에 따라 다른 함수를 반환하는 것도 구현 가능) 함수 안에 함수를 선언한다는 것일 뿐, 함수 선언 방식은 동일하므로 일반적인 함수 작성 코드는 따로 작성하진 않겠다. 다만 내부 함수를 반환할 때 외부함수의 반환타입 명시 예시를 들자면 다음과 같다. 외부함수의 선언문:func IncDec(wan..
Swift 제너릭 (Generic) Swift 제너릭 (Generic) 자료형에 의존하지 않는 알고리즘만 작성된 함수 (C++에서는 Templete 함수라고 함!) Swift 배열을 써봤다면 같은 자료형이 아니더라도 배열에 담기는 것을 알 수 있다. Swift의 Array Library가 제너릭으로 작성되었기 때문이다. 그밖에도 Stack, Queue 등 자료형에 의존하지 않는 알고리즘을 필요로 하는 데에 제너릭이 사용된다. (자료형에 의존한다면 똑같은 기능을 함에도 자료형별로 다 따로 선언해야함..-_-;;;) ex) 사실 Swift에는 '튜플'을 이용하면 되므로 별도의 swap함수를 만들지 않아도 된다. ( var1 = (p1,p2), var2 = (p2, p1) ) 제너릭 사용 예를 들기 위해 swap함수를 작성함. func swap..
Swift 함수 기초 Swift 함수 기초 함수는 어떤 작업을 수행하는 코드의 그룹이다. 기능별로 나누어 그것을 각각의 함수로 작성한다면 가독성 증대 및 유지관리가 쉽다. 기본적인 함수 형태 Swift에서 함수의 정의는 다음과 같다. func 함수이름(인자레이블: 자료형, 인자레이블: 자료형, ... ) -> (반환자료형) { 함수 내용 return 반환값 } 기본적인 함수를 선언해 봤다. 인자는 num이라는 레이블에 Int 값을 받아서,10증가 후 결과 Int 값을 반환하는 함수이다. 함수 중복 정의 : 매개변수가 다르다면 이름이 같은 함수를 중복정의 할 수 있다. 똑같은 이름의 greet 함수가 2개이다. String 타입 매개변수 하나만 받는 경우 String 타입 매개변수 2개를 받는 경우 이처럼 매개변수가 다르다면 ..
ExpandEnvironmentStrings API 로 윈도우 경로 받기 ExpandEnvironmentStrings API 로 윈도우 경로 받기 Parameter Output String %USERPROFILE% C:\Users\유저 %LOCALAPPDATA% C:\Users\유저\AppData\Local %APPDATA% C:\Users\유저\AppData\Roaming %TEMP% C:\Users\유저\AppData\Local\Temp %TMP% C:\Users\유저\AppData\Local\Temp %PUBLIC% C:\Users\Public %ALLUSERSPROFILE% C:\Users\ProgramData %ProgramData% C:\Users\ProgramData %ProgramFiles% C:\Users\Program Files %CommomProgramFi..