-
In-Out Parameters - FunctionsiOS/🟠 Swift 2020. 11. 6. 16:04
"입출력 파라미터" 함수 Argument에 값 전달 시, Parameter는 임시 상수로서 값을 복사합니다. ( immutable ) 실제로 전달한 Argument의 값을 변경하고 싶을 때, inout을 사용합니다. c++의 참조자와 비슷한 기능을 합니다. /* 정의부 */ func example(name: inout Type) { ... } /* 호출부 */ example(name: &expr) //전달할 값에 &를 붙여 전달합니다. 주의할 점 1. 리터럴을 전달하면 안됩니다. 리터럴은 메모리 공간이 따로 없습니다. 2. 상수를 전달하면 안 됩니다. immutable입니다. 3. 가변 파라미터를 전달할 수 없습니다. 4. 기본 값을 지정할 수 없습니다.
-
Parameters - FunctionsiOS/🟠 Swift 2020. 11. 6. 15:27
" 함수 블록 내에서 사용하는 임시 상수" 상수이므로 immutable입니다. Argument Label을 따로 정의하지 않으면, Parameter Name이 Argument Label이 됩니다. Argument와의 구분 함수 호출 코드에서 전달한 Argument가 함수 정의부의 Parameter에 복사되는 것입니다. 끝. 이전 글: guard Statement - Conditional Statements guard Statement - Conditional Statements /* Syntax */ guard condition else { statements } guard optionalBinding else { statements } if 와의 차이 1. guard 는 조건의 수가 늘어나더라도 코드가..
-
guard Statement - Conditional StatementsiOS/🟠 Swift 2020. 11. 4. 10:30
/* Syntax */ guard condition else { statements } guard optionalBinding else { statements } if 와의 차이 1. guard 는 조건의 수가 늘어나더라도 코드가 중첩되지 않습니다. 2. guard 는 else block을 생략할 수 없습니다. 3. Binding에 사용한 변수 혹은 상수를 else block 이후에 계속 사용할 수 있습니다. 단, else block 에서는 사용 불가 특징 1. else block은 condition 혹은 optionalBinding 이 실패했을 경우 진입합니다. 2. guard 의 else block 내에서 return 혹은 throw 를 통해 Early Exit 해야 합니다. ( 아닐 시 컴파일 에러..
-
Type Safety - Data TypesiOS/🟠 Swift 2020. 11. 3. 01:41
스위프트의 3가지 특징 : Safe(안정성) , Fast(신속성) , Expressive(표현성) Swift는 형식 안정성을 보장하기 위해 자료형을 엄격하게 구분합니다. 기본적으로 자료형의 이름이 다르면 배정 및 연산이 불가능합니다. /* 실수형의 값을 Int형 변수에 넣을 수 없습니다 */ var val1: Int = 12.34 // (X) /* 같은 형이라도 메모리 공간 크기가 다르므로 불가능 합니다 */ var val2: Int = 12 var val3: Int8 = val2 // (X) Int: 8바이트, Int8: 1바이트 연산 시에도 값이 유실되는 문제를 컴파일 타임에 방지하기 위해서 같은 자료형끼리만 연산 할 수 있습니다. var left: Int = 100 var right: Double ..
-
Type Inference - Data TypesiOS/🟠 Swift 2020. 11. 3. 01:07
Swift 컴파일러는 변수 혹은 상수 선언시 타입을 명시 하지 않으면 알아서 형을 결정 합니다. 이것을 Type Inference 라고 합니다. 형식 추론 r-value 를 기반으로 형식을 추론하기 때문에 컴파일 시간이 증가하여, 규모가 큰 프로젝트일 수록 Type Annotaion을 활용하는 경우가 있다고 합니다. r-value Type Inference 시 123 Int 1.23 Double "Hello" String true Bool false Bool 이와 달리 Type Annotation은 자료형을 직접 지정하는 것으로, Type Inference로 지정되는 타입이 아니라 직접 지정하고 싶을 때 사용합니다. 앞서 언급한 컴파일 타임 와 가독성 측면에서 저는 Type Annotation을 쓰는 것..
-
3 features of First Class Citizen - FunctioniOS/🟠 Swift 2020. 11. 2. 18:48
can be stored in variavles and data structures 상수나 변수에 저장할 수 있습니다. can be passed as a parameter to a function 매개변수로 함수에 전달 될 수 있습니다. can be returned as the result of a function 함수의 결과로 반환될 수 있습니다. 끝! 이전 글: Tuples - Tuples Tuples - Tuples " 하나의 상수 혹은 변수에 여러 개의 값을 저장할 수 있을까?" 기존의 Int, String 과 같은 타입은 하나의 상수 혹은 변수에 하나의 값을 저장할 수 있었습니다. 이런 타입을 Scalar Type 이라고 합니다 woozzang.tistory.com
-
Tuples - TuplesiOS/🟠 Swift 2020. 10. 25. 10:30
" 하나의 상수 혹은 변수에 여러 개의 값을 저장할 수 있을까?" 기존의 Int, String 과 같은 타입은 하나의 상수 혹은 변수에 하나의 값을 저장할 수 있었습니다. 이런 타입을 Scalar Type 이라고 합니다. Tuples 은 Compound Type 입니다. 여러 개의 값을 저장 할 수 있습니다. let myTuples = (1, "This", "is", "Awesome", 111) Tuples 은 괄호를 이용하여 표현합니다. 괄호 안의 하나 하나의 요소는 Member 라고 부릅니다. 위의 myTuples 는 ( Int, String, String, String, Int ) 형을 갖습니다. 선언된 Tuples의 Members 는 추가 및 제거가 불가능 합니다. Tupels 의 Members ..
-
Swift) Raw Value - EnumerationiOS/🟠 Swift 2020. 10. 24. 22:56
enum Alignment { case left case center case right } 위 코드는 Alignment 라는 열거형의 선언입니다. 위 case 들은 Raw Value (원시 값) 이 설정되지 않았습니다. Raw Value 를 설정하지 않은 case 들은 그 자체가 고유한 값이 됩니다. 관련 글: Enumeration 총 정리 (제가 적은 블로그 글) Raw Value 는 case 들이 갖는 또 다른 값입니다. Raw Value 를 설정하기 위해서는, 열거형 헤드 부분에 데이터 타입을 선언해주어야 합니다. String, Character, Number Types 을 선언할 수 있습니다. enum Alignment: String { case left case center case right..
-
Launching - App Architecture - iOS - Human Interface GuidelinesiOS/🎨 UI ⁄ UX 2020. 10. 13. 18:05
Launch experience 은 사용자들이 당신의 앱에 대한 평가를 내리는 과정에서 유의미한 영향을 미칩니다. 사용자들이 사용하는 기종과 상관없이, 그리고 사용자가 당신의 앱을 마지막으로 열었던 것이 얼마나 오래되었는지와는 상관없이, Launch experience 는 빠르고 매끄러워야 (seamless) 합니다. launch: to begin something such as a plan or introduce something new such as a product: 앱에서의 launch experience 는 앱을 시작하여 launch screen을 띄우고 app's fisrt screen 으로 transition 된 직후 까지라고 볼 수 있습니다. seamless: happening withou..