본문 바로가기

Tech/iOS

[iOS] Day4 - 수업정리

728x90

 

원래 아침형 인간이라 5~6시 기상 10~11시 취침이 일상이었는데

최근에는 강의 전 정리 강의 밥 공부 밥 공부 취침이라 하루가 길면서도 짧다..

앉은 자리에서 코딩 망부석이 될지도..

오늘도 달려보자

 


breakpoint

단일 파일에서 실행되는 breakpoint, 가장 보편적인 형태는 Line breakpoint다

line breakpoint를 원하는 코드에 걸면 다음과 같이 행 번호에 파란색으로 표시된다 

의도적으로 프로그램을 특정 조건을 줘서 일시정지를 한다 -> Debug할 때 오류가 난 곳을 체크해준다

 

breakpoint 비활성화 방법

1. 행의 체크해 놓은 breakpoint를 클릭하여 비활성화 / 오른쪽 클릭 후 delete 가능 

2. 하단의 breakpoint icon을 클릭하여 비활성화 

3. 상단의 breakpoint icon을 클릭하면 모든 파일의 breakpoint 영역이 보인다 필요 없는 부분을 삭제 가능

 


function vs method

function : 함수는 독립된 기능을 수행하는 단위

method : class, struct, enum에 포함되어 있는 function를 method라 한다.

method = class function

functio과 method를 잘 구분하자


parameter vs argument

parameter(매개변수)는 함수의 정의에 포함되는 변수

argument(전달인자)는 함수를 호출(call)할 때 전달하는 실제 값(value)

 

https://stackoverflow.com/questions/156767/whats-the-difference-between-an-argument-and-a-parameter


argumentlabel vs parameter name

함수 parameter 에는 argument label(외부 매개 변수)과 Parameter name(내부 매개 변수)이 모두 있다

 

argument label은 함수를 호출할 때 사용된다

 

parameter 이름은 함수 구현에 사용된다

 

기본적으로 parameter는 parameter name을 argumentlabel로 사용한다

 


wildcard pattern

사용되는 곳의 값을 생략(무시)한다

paraandargu 함수를 호출 하려면

 

parametername인 verse 즉 파라미터명을 명시해줘야 한다

 

argumentlabel에 _(와일드카드 패턴)을 적용시켰다

 

parametername 을 명시하는 부분이 생략되어 호출된다


Optional

swift 문법의 꽃

 

swift가 가지고 있는 가장 큰 특징 -> 값이 있을 수도 있고 없을 수도 있는 것을 나타낸다

값이 없다? -> nil

무작정 변수에 nil을 넣으면 에러가 뜬다

 

값이 있을수도 있고 없을 수도 있는 변수를 정의할 때는 타입에 '?'를 붙여야 한다

이렇게 정의한 변수를 Optional이라 한다

초기값이 없다면 기본값은 nil이다

오류가 나지 않는다

즉, Optional은 어떤 값을 갖거나 nil을 가진다

 

Optional Binding

 

옵셔널 값을 가져오려면 어떻게 해야할까?

-> Optional Binding을 활용하면 된다

 

옵셔널 바인딩은 옵셔널의 값이 존재하는지 확인 후 존재하면 그 값을 다른 변수에 대입한다

forced unwrapping, if let binding,  guard let binding, nil-coalescing 이 있다

 

1. forced unwrapping

optional type 강제로 추출

값이 없을 경우 error

nil이 아님을 확인 후 강제 추출

nil이 아니라면 강제로 추출해서 사용

값이 있는 경우 App이 crush 하므로 웬만한 경우에 절대 사용하지 않는 것을 권장한다

 

2. if let binding 

optional의 값이 존재하는지를 검사한 뒤 존재한다면 그 값을 다른 변수에 대입한다

조건이 참이라면? {} 안의 코드를 실행하는 것 

안전한 방법이다

 

 

3. guard let binding

블록 내부에서만 사용된다.

에러인 경우와 에러가 아닌 경우를 나눠서 처리하기 위해 사용된다

optional을 벗겼을 때 nil이면 더이상 코드를 실행하지 않겠다는 의미가 강하다

 

guard문은 조건이 true가 아닐 때 else 내부의 코드를 실행한다

즉 guard 문은 에러처리를 먼저 하고 에러가 있으면 코드 실행을 중지한다

 

4. Nil-coalescing

optional 표현식 ?? 값

 

optional 표현식에 값이 있다면? -> optionalnum의 unwrapping 된 값 출력

optional 표현식에 값이 없다면? -> 10 출력

 

Optional Chaining

array가 nil인 경우

-> nil을 반환

 

array가 Empty인 경우

true 반환

 

array에 값이 있는 경우

false 반환


Any

Any는 함수타입을 포함하여 모든 타입의 인스턴스를 나타낼 수 있다