Protocol Syntax

Basic
You can list if there are multiple protocols

 

you shold type superclass first

 

Property Requirments

simple example

Method Requirments

basic
문서랑 결과가 같음, finally은 내가 인위적으로 추가한 거임.

Mutating Method Requirements

Initializer Requirments

Class Implentations of Protocol Initializer Requirments

required. - protocol
override - superclass

Failable Initializer Requirements

failable initializer을 정의 할 수 있데 ㅎㅎ, 별로 중요하지는 않는듯, 예재가 없어☺️☺️

Protocols as Types

문서랑 값이 같음.

Delegation

어떤 권한을 가진 사람이 다른 사람에게 결정을 내릴 수 있게 하고 직접적이게 포함되는 것을 피하게 해준다 라고 하네요!! 😊😊😊

난수 결정
주사위 면과 던지는 함수

 

주사위를 준비하고 game function 준비

 

game이 시작하고 끝나는 것을 관리하는 protocol
game algorithm

 

game의 상태를 tracking 하는 class

 

game play!!

'IOS > IOS Documentation' 카테고리의 다른 글

Enumeration  (0) 2021.04.06
Initialization  (0) 2021.03.23
Methods  (0) 2021.03.22
Properties  (0) 2021.03.22
Structure and Classes  (0) 2021.03.21

Ennumeration Syntax

Multiple cases can appear on a single line, separated by commas

Matching Enumeration Values with a Switch Statement

switch문을 완벽하게 사용하래!!

Iterationg over Enumeration Cases

Associated Values

 

let을 앞으로 가져올 수 있음.

Raw Values

Implicitly Assigned Raw Values

rawValue을 사용할때에, CompassPoint 에 :String을 안해주어서 에러가 발생하였다.

Initializing from a Raw Value

rawVaule는 case 또는 nil을 반환함...!!

 

Recursive Enumerations

 

playground-2.swift
0.00MB

'IOS > IOS Documentation' 카테고리의 다른 글

Protocols_part 1  (0) 2021.04.09
Initialization  (0) 2021.03.23
Methods  (0) 2021.03.22
Properties  (0) 2021.03.22
Structure and Classes  (0) 2021.03.21

Initialization은 Instance of class, structure, or enumeration의 사용을 준비하는 과정이다.

swift의 Initializer는 값을 리턴하지 않는데, 그들의 중심 업무는 확실히 그들이 처음으로 사용되기 전에

초기화시키는 것이 그들의 업무이니깐

Setting Initial Values for Stored Properties

 Instance가 생성 될때, Classes and Structures들은 "must" 적절한 초기 값이 었어야해.

방법은 두가지야.

Default preoperty value as part of the property's definition 

or

Initializer

Initializers

initializer을 사용하여 초기화

Default Property Values

만약, 항상 같은 초기값이면, Initializer보다는 변수로 지정하자.

변수로 초기화

Customizing Initialization

Initialization Parameters

parameter값이 다르면, 이에 해당하는 각각의 함수로 들어가서 수행함.

Parameter Names and Argument Labels

무조건 argument label을 써줘야되. 안써주면 아래와 같이 에러가 뜸.

Initializer Parameters without Argument Labels

Opitional Property Types

만약에, 너가 no value값을 허락할때가 있을꺼야. 이때에 이럴때에 optional type을 사용하면 좋은거 같아여.

Assigining Constant Properties During Initialization

let으로 할당 했을때, 추후에는 변경이 안된다.

Default Initializers

Memberwise Initializers for Structure Types

Structure type은 memberwise initializer가 존재한데여. 

 

 

 

 

'IOS > IOS Documentation' 카테고리의 다른 글

Protocols_part 1  (0) 2021.04.09
Enumeration  (0) 2021.04.06
Methods  (0) 2021.03.22
Properties  (0) 2021.03.22
Structure and Classes  (0) 2021.03.21

Methods는 함수. Classes, structures, and enumeratiosn instance mothods를 부를 수 있어. 그리고 이것은  특정한 일과 함수를 캡슐화할 수 있어. 또한, 저것들은 class methods를 정의 할 수 있어.

 

Instance Methods

Instance methods는 말그대로 instance에 속한 class, structure, and enumeration이야.

Instanced의 예시

The self Property

모든 instance의 type은 함축적인 properties를 가짐.  self.라고 불리는 이것은 정확히 instance 그자체와 같다.

self를 굳이 사용할 필요는 없데, 스위프트가 추측해주니깐. 

다만, 이름이 같을 때는 스위프트도 헷갈릴 수 가 있으니깐, 제대로 알려주자.

Modifying Value Types from within Instance Methods

Stuctures와 enumerationsvalue types임. 그래서, Instance methods내에서 properties를 변경할수가 없어.

but 방법이 있어.

 

Assigning to self Within a Mutationg Method

self를 사용한 설정

 

Type Methods

Type Methods는 특정 타입 자체에서 호출해 사용함. Instance Methods는 Instance내에서 사용했지만,이것을 사용하려면, func 앞에 static 이나 class 키워드를 추가해야해.class method를 사용하면 서브클래스에서 오버라이드 할 수 있어.

스위프트에서는 모든 타입에서 이것을 활용할 수 이썽.

'IOS > IOS Documentation' 카테고리의 다른 글

Enumeration  (0) 2021.04.06
Initialization  (0) 2021.03.23
Properties  (0) 2021.03.22
Structure and Classes  (0) 2021.03.21
Closures  (0) 2021.03.19

propertires는  값과 연관이 있다.

Stored properties와 Computated properties가 있데여.

첫번째는 classes, structures, and enumerations에서 사용이 가능하고 값을 저장함.

두번째는 classes, strucutres에서 사용이 가능하고 값을 계산하고 반환함.

obeservers를 사용하여 실시간 값을 확인할 수 도 있당.

또한, property wrapper를 사용하여 코드를 재사용할 수 도 있데, like using in getter and setter of multiple properties

Stored Properties

Such as,  var or let

Stored properties of  Constant Structure Instances

let은 변경이 추후에 불가능해, 왜냐하면 상수이기 때문이얌.

Lazy Stored Properties 

lazy modifier는 꼭꼭 var keyword랑 같이 써야됨.

왜냐하면, 초기 값이 instance initializtion이 완료한후 까지 검색이 안될수도 있기 때문라고 해. 음... 좀 더 쉽게

상수는 항상 초기값을 가지고 있어야한다고 해서, 무조건 var keyword 앞에 사용해야 한데.

 

생각해보면, 이 키워드는 어느 속성에 너무 의존적이어가지고 이 어떠한 행위가 끝날때까지 적절한 값을 알지 못하는 경우에 유용함. 

또한, 복잡한 계산이나 시간이 많이 걸리는 작업에 사용하면 실제로 사용되기 전에는 실행되지 않기에 인스턴스 초기화 순간에 컴퓨터에 부담을 주는 것을 방지 할 수 있음.

여러 스레드에서 사용한다면, 복수의 lazy keyword가 실행 됨.

사용할때에 데이터를 가져올꺼얌.

 

Global and Local Variables

Globlal은 함수 밖에 정의한 것들, Locla은 함수 안에서 정의한 것들.

 

Global constants와 variables는 항상 게으르데... 그래서 Global 변수는 lazy키워드를 안써도 된데.

 

Type Properties

Type Properties는 단 하나만 생성이 되고 모든 인스턴스에 공통으로 사용되는 값을 정의해야할때, 사용함.

그리고 이것은 항상 초기값을 지정해야함. 왜냐하면, 타입자체에는 initializer가 없기에 초기화할 수가 없기 떄문임.

Type Property Syntax

static과 class 두가지 형태로 type property를 선언할 수 있음.

class는 서브클래스에서 오버라이드 가능하고 static은 불가능.

static member들은 앞에 structure name. 을 써줘야함. 요렇게 하면 에러가 생김.

 

'IOS > IOS Documentation' 카테고리의 다른 글

Initialization  (0) 2021.03.23
Methods  (0) 2021.03.22
Structure and Classes  (0) 2021.03.21
Closures  (0) 2021.03.19
Functions  (0) 2021.03.18

Structure and Classes는 다른 프로그래밍 언어보다 functionality하다.

스위프트는 separate interface와 implementation files를 창조할 필요가 없다.

 

Comparing Structure and Classes

Classes는 structure보다 이러한 차이점을 가진다.

상속은 하나의 클래스가 다른 characteristics에게 상속하는 것을 가능하게 한다.

형변환은 너에게  runtime때에 class instance의 형식을 확인하고 해석하는 것을 가능하게 한다.

비초기화는 instance of a class를 어떠한 resources으로 부터 자유롭게 한다.

참고 count는 클래스 인스턴트에 하나 이상의 참조가 가능하게 한다.

 

structure가 class보다 쉽다. 그래서 가르칠때에 보통 structure을 사용하는 이유가 이것이다.

Definition Syntax

property와 method는 소문자

이름은 대문자를 사용한다.

 

struct SomeStructure{

 

}

 

class SomeClass{

 

 

Structure and Class Instance

let someResolution  = Resolution()

let someVideoMode = VideoMode()

 

Accessing Properties

Instance를 만든다음에, 닷을 사용해요!!

print("The width of someResolution is \(someResolution.width)")

 

also, you can drill down into subproperties.

like,

 someVideoMode.resolution.with = 1280

print("The width of someVIdeoMode is now \(someVideoMode.resolution.width)")

 

Memberwise Initializers for Structure Types

모든 structure은 자동적으로 memberwise Initializer가 생성됨. 이것으로 너는 맴버의 속성값을 초기화 할 수 있음.

 

let vga = Resolution(width: 640, height:480)

 

Structures and Enumerations Are Value Types

Instance의 값을 바꾸게 되어도, 연관된 Instance는 바뀌지 않는다.

Classes Are Reference Type

Instance가 바뀌면 연관된 Instance도 바뀐다.

여기서 뽀인트는 videomode는 let으로 선언이 되었는데도, 바뀌었다... 왜?? 사실 바꾸는 것이 아니라 참조하는 것이기 때문이야.

Identitiy Operators

=== , !== 

이것들의 의미는 두 상수 혹은 변수의 class  tyoe이 정확히 같은 class instance를 참고하냐를 의미함.

값이 같은것이냐가 아니고👍👍

논외) ==, != 이것들이 값들이 같으냐 다르냐임

Pointers

Swift는 C언어의 포인터와 비슷하다. 다만, asterisk(*)를 사용하지않고 직접적인 실제 메모리를 가르키는 것이 아니고 상수,변수처럼 정의해서 사용함.

'IOS > IOS Documentation' 카테고리의 다른 글

Methods  (0) 2021.03.22
Properties  (0) 2021.03.22
Closures  (0) 2021.03.19
Functions  (0) 2021.03.18
Control Flow  (0) 2021.03.09

Clouseres는 이름이 없는 함수이다.

 

Global function은 이름을 가지고 어떠한 값도 가질 수 없음.

Nested function은 이름을 가지고 그들의 함수에서 값을 가질 수 있음.

 

Closure은 이름이 없고 주변 문맥으로부터 값을 가질 수 있음.

 

Closure Expressions

Nested Function처럼 큰 함수를 정의를 해서 만들어도 되지만, Closure은 생략을 하여 함수를 가볍게 만든다.

The Sorted Method

sort를 사용하여 정렬하기

Closure Expression Syntax

sorted() 안에다가 {(parameter) -> result in return x} 적은 거임 

즉, 뽀인트는 {} 와 in 

Inferring Type From Context

string 생략 왜냐 스위프트는 추론이 가능한 언어이니깐.

Implicit Return from Single-Expression Closures

return 생략.

Shorthand Argument Names

in 과 s1대신 $0

Operator Methods

끝장판.... 기호까지 생략

 

Trailing Clousures

축약하기
trailling closure를 활용한 숫자를 문자로 바꾸기.
closure를 활용하여 함수를 축약하기. 보니깐 좀더 사람 말같은 느낌이 듬.

'IOS > IOS Documentation' 카테고리의 다른 글

Properties  (0) 2021.03.22
Structure and Classes  (0) 2021.03.21
Functions  (0) 2021.03.18
Control Flow  (0) 2021.03.09
Collection types  (0) 2021.03.08

함수는 특정한 일을하는 덩어리이에여. ㅇㅋ?

 

함수는 정의하고 부를 수도 있어여.

 

모든 함수는 종류를 가지고 있어여.

 

Defining and Calling Functions

 

func greet(person :  String) -> String{

let greeting = "Hello,  " + person + "!"

return greeting

}

 

print(greet(person: "user"))

 

결과

return은 함수의 실행을 끝낸다라는 것과 값을 넘겨준다라는 의미를 가짐.

 

Funnction Parameters and Return Values

Function without Parameters

Function with Multiple Parameters

true일때

 

false일때

 

 

Functions with Multiple Return Values

Functions with Multiple Return Values

dot를 사용하여 접근할 수 있음.

 

Optional Tuple Return Types

 

?를 추가함 그런데, 각각하면 왜 에러가 뜰까?
배열이 비어있을떄
배열에 문자가 왔을떄

Function With an Implicit Return

return 안써도 된데.

 

Function Argument Labels and Parameter Names

함수의 parameters는 대제목의 2개로 구성되어있다.

Argument Labels는 함수를 부를때에 사용된다.

Parameter Names는 함수를 실행에 사용된다.

 

specifying Argument Labels

1004아래에 ()가 찍힌다. 왜?
print()를 제거하니깐, 숫자만 출력됨
단순한 문재였음. 반환값이 없으니깐, print()는 void를 출력한 것이었음

omitting Argument Labels 

Default Parameter Values

3으로 초기화함, 근데 보통 중요한 변수는 초기 설정을 하지 않고 첫번째 변수칸에다가 놓는데 like firstParameterName.

Variadic Parameters

Double 하고 ... 이것으로 여러가지 받을 수 있음.

In-Out Parameters

함수 내부에서 parameter 값에 변화를 줄려고 하면 안된다네

 

해결
외부에서 사용하기

Fuction Types

함수의 종류는 크게 2가지이다.

원인을 주고 결과를 받는 것, 결과(void)만 받는 것.

Using Function Type

Function type으로 정의내림

 

생략 해도 됨.

Function Types as Parameter Types

함수를 parameter로 활용할 수 있음.

Function Types as Return Types

맨아래 표시된 것은 Zero!!임. 재밌다 ㅋ 결국에는 함수를 이중으로 사용했기 때문에, 결과로써도 함수를 사용할 수 있다라는 것같아.

Nested Function

이건 별 내용 없어, 함수가 다 안에 있다라는 내용임,

nested function 

 

 

 

 

'IOS > IOS Documentation' 카테고리의 다른 글

Structure and Classes  (0) 2021.03.21
Closures  (0) 2021.03.19
Control Flow  (0) 2021.03.09
Collection types  (0) 2021.03.08
Strings and Characters  (0) 2021.03.06

로직의 흐름을 설명함.

일단, 가장 많이 사용되는 반복.

 

Iteratial statement 

 

for in loop

underline 으로 간단하게 루프하기

 

분의 범위 선정
분 간격 설정하기

while 

while {

}

 

repeat while

repeat {

 

}while somethig

conditional statement

if

 

switch

 

no implicit fallthrough

interval matching 

tuples

value binding s

where

Compound Cases

 

 

Control transfer statement

continue - 반복은 끝나서 함수위로

break - 함수 종료

fallthrough - 맨 아래로 스위프트에서는 신경 안써도됨

return -  반환

throw-  try and catch(error and handling)

 

Index While

while에 인덱스를 붙여서 가독성을 높임,

gameloop: while square != fincalsquare{

case finalsquare : break gameloop

case let newsquare where newsquare>fincalsquare: continue

//이 게임은 25가 딱되어야 끝나는 게임 25를 넘게 되니깐 다시 함수로.

default: 게임 로직

}

Eary Exit

returen 대신 break, contiune등과 같은 control transfer statement은 사용했더니, 에러가 생김.

check API Availability

스위프트는 사용자가 사용할 수 있는 API인가를 확인해 준다.

 

 

'IOS > IOS Documentation' 카테고리의 다른 글

Closures  (0) 2021.03.19
Functions  (0) 2021.03.18
Collection types  (0) 2021.03.08
Strings and Characters  (0) 2021.03.06
Basic Operators  (0) 2021.03.04

세개가 있음.

그것은.....!!!!

array, set, dictionary

array는 같은종류이고 순서가 있는 모임.

set는 같은 종류이고 순서가 없는 모임. 집합느낌.

dictionary는 순서는 없지만 키값이 있는 모임.

mutabillity collections

Colection type을 변수에 할당하면, 변화가 가능하지만 

상수에 할당하면, 변화가 불가능함. 명심!! 굳이 변화를 줄 필요가 없으면 최적화를 위해서는 상수에 할당하기도 함.

 

Array

동일한 값이 다른 위치의 배열에 여러번 나타날 수 있데.

 

array type shorthand syntax

Array[Element].  이것을  [Element]로 표현할 수 있데. ㅋ

 

creating empty array

var someInt = [Int]()

 

someInt.append(3)

 

someInt= []

// It is still integer type

 

creating a array with a default value

var threezero = Array(repeating: 0.0, count:3)

 

var threeone = Array(repeating: 1.0, count:3)

 

var SixDoubles = threezero + threeone

creating an array with an array literal

var shoppinglist : [String] = ["Eggs","Cheese"]

swift의 추론 능력으로

var shoppinglist = ["Eggs","Cheese"]

 

accessing and modifying an array

1.  .count 

2. .isEmpty

3. .append()

4. +=

5. subString

6. 범위를 정하여 삽입하기

7. .insert()

8. .remove()

9. .removeLast()

 

 

Iterating over an array

for item in shoppinglist {

    print(item)

}

enumerated는 인덱스와 값을 두개를 반환함.

for (index, value) in shoppinglist.enumerated(){

print("Items \(index+1). : \(value)")

}

 

Set 

순서로 된 것이 중요하지않고 항목이 한번만 나타나야 할 경우 사용

 

hashable values for set types

세트를 하기위해서는 값들이 해쉬가 가능해야한다.

그런데, 스위프트의 Type들은 다 해쉬가 가능함으로 신경 안써도 됨,

다만, 타입을 커스텀할때는, hashable을 설정해줘야한데. 자세한건 나중에.

 

set type syntex

 

Set<Element> 라고 적고 이것은 배열과 다르게 축약문 같은 거 없어.

 

creating and initializing an Empty an empty set

 

var letters = Set<Character>()

 

creating a set with a array literals

 

var mylist : Set<String> = ["Darknight", "Darknight Rise", "A letter from Ocean"]

 

스위프트의 추론 능력 때문에 아래와 같이 사용해도 됨.

var mylist : Set = ["Darknight", "Darknight Rise", "A letter from Ocean"]

 

 Asseccing and modifying a set

1. .count

2. .isEmpty

3. .insert()

4. .remove()

5. .contains()

 

Iterating  over a set

 

for genre in mylist {

 print("\(genre)")

}

만약, 특별한 순서를 부여하고 싶다면, sorted() 를 사용할 수 있다.  그러면 < operator를 사용하여 정렬 될수 있다.

for genre in mylist.sorted() {

 print("\(genre)")

}

 

fundamental set operations

 

set membership and equality

Dictionaries 

현실세계의 사전이랑 똑같이 생각하면 됨.

Dictionary type shorthand syntax

이것도 마찬가지로 해쉬가 가능해야함.

Dictionary<Key : Arrey> 이것을 

[Key: Arrey]로 사용 가능함.

 

Creating a empty dictionart

var nameofIntegers = [Int: String]()

 

Creating a Dictionary with a Dictionary literal

 

var airports : [String:String] = ["YYZ":"Toronto Pearson","DUB":"Dublin"]

 

var airports = ["YYZ":"Toronto Pearson","DUB":"Dublin"]

 

Asseccing and Modifying a Dictionary

 

1. .count()

2. .isEmpty

3. airport["LHR"] = "Lodon Healthrow"

4. updateValue("Dublin Airport", forkey:"DUB") - 이전에 값을 반환하고 새로운 값으로 업데이트함. 

5. airportName = airport["DUB"]

6.airport["APL"] = nil

7.removeValue(forkey:"DUB")

Iterating over a Dictionary

for (airportCode, airPortName) in airports {

   print("\(airportCode): \(airportName)")

}

 

for airportCode in airports.keys{

print(\(airportCode))

}

 

for airportName in airports.value{

print(\(airportName))

}

 

Array Instance를 사용하는 API에서 사전의 키 또는 값을 사용해야 하는 경우 키 또는 값 속성을 사용하여 새 어레이를 초기화함.

아래랑 같이.

let airportCode = [String](airports.key)

// airportCodes is ["LHR", "YYZ"]

let airportName = [String](airports.values)

// airportNames is ["London Heathrow", "Toronto Pearson"]

 

이것또한, 정렬되지 않는 것이기 때문에, sorted()를 사용해서 정렬할 수 있음.

 

 

 

 

'IOS > IOS Documentation' 카테고리의 다른 글

Functions  (0) 2021.03.18
Control Flow  (0) 2021.03.09
Strings and Characters  (0) 2021.03.06
Basic Operators  (0) 2021.03.04
The BASIC  (0) 2021.03.03

+ Recent posts