브래의 슬기로운 코딩 생활
iOS프로그래밍기초 8주차 중간고사 정리 본문
iOS 프로그래밍 기초
변수의 자료형의 종류와 크기 – print(type(of:변수명))
일반적으로 초기값을 주지 않을 때만 자료형을 쓴다.
정수 데이터 타입 – Int
부동 소수점 데이터 타입 – Double
부울 데이터 타입 – Bool
문자 데이터 타입 – Character
문자열 데이터 타입 –String
변수: var
상수: let
튜플 (Tuple): 여러 값을 하나의 개체에 일시적으로 묶는 방법
let myTuple = (10, 12.1, "Hi")
print(type(of:myTuple)) // (Int, Double, String)
let myTuple = (count: 10, length: 12.1, message: "Hi")
print(type(of:myTuple)) // (count: Int, length: Double, message: String)
튜플의 가장 강력한 점은 함수에서 여러 값들을 한 번에 반환하는 것
옵셔널 타입 (매우 중요)
값을 반환할 때 오류가 발생할 가능성이 있는 값은 옵셔널 타입이라는 객체로 감싸서 반환
옵셔널 타입을 선언하기 위해서는 타입 선언부 뒤에 ? 문자를 씀
옵셔널 타입 강제 언래핑
옵셔널형 선언: 자료형 뒤 ?
옵셔널 강제 언래핑: 변수명 뒤 !
옵셔널 바인딩
강제 언래핑하는 또 다른 방법, 옵셔널에 할당된 값을 임시 변수 또는 상수에 할당
if let 상수 = 옵셔널 변수{
// 옵셔널 변수에 값이 있다면 언래핑 되어 상수에 저장 되고 if문 실행
// 값이 없다면 if문의 조건이 거짓이 되어 if문을 실행하지 않음
}
여러 옵셔널을 언래핑 하는 법 = 콤마 사용
- if let 상수1 = 옵셔널 변수1, let 상수2 = 옵셔널 변수2
형 변환
상속 관계가 있는 클래스들 끼리만 타입 캐스팅 가능
자식클래스 as 부모클래스 // upcasting 안전한 캐스팅
부모클래스 as! 자식클래스 // downcasting 일반 타입으로 반환
// 다운캐스팅이 반드시 성공할 것이라는 확신이 있을 때
부모클래스 as? 자식클래스 // downcasting 옵셔널 타입으로 반환, 확신이 없을 때
타입 검사 is – is 키워드를 이용하여 값의 타입 검사 (type check)
인스턴스가 해당 클래스인가?
; 인스턴스 is 클래스
Any 와 Anyobject
Anyobject (protocol)
범용 타입, 상속관계가 아니더라도 타입 캐스팅 가능한 타입. 어떤 클래스의 객체도 저장 가능, 클래스만 허용함
Any
클래스, 구조체, 열거형, 함수 타입도 가능
범위 연산자
닫힌 범위 연산자: ...
반 열린 범위 연산자:..<
Nil-Coalescing Operator (Nil 합병 연산자): ??
- 옵셔널 변수 ?? nil일 때 할당되는 값
if문 – if문 다음에 무조건 중괄호를 사용 / I문에서 콤마는 and의 의미
guard문 – 조건식이 거짓이면 실행 / 조기 출구 전략을 제공
if let 상수 = 옵셔널 변수 // 옵셔널 변수가 nil이 아니면
guard let 상수 = 옵셔널 변수 // 옵셔널 변수가 nil 이면
소수점 자리 표현
– import Foundation / print(String(format: “%.2f”,변수))
switch ~ case: 각 case문 마지막에 break가 자동으로 들어가 있음
switch 표현식{
case 값:
구문
.
.
.
default:
구문
}
함수 선언 방법
func 함수명 (매개변수 이름:매개변수 타입,매개변수 이름:매개변수 타입,...) -> 리턴형 타입{
// 함수 코드
}
func add (first x: Int, second y: Int) -> Int{
return(x+y)
} // first, second는 외부 매개변수 x,y는 내부 매개변수
함수명: 함수명(외부 매개변수:외부 매개변수:)
함수명 알아보는 법: print(#function)
함수자료형: (매개변수 타입, 매개변수 타입) -> 리턴형 타입
가변 매개변수
함수가 가변 매개변수를 받는다는 것을 가리키기 위해 세 개의 점 (...)을 사용
Call by reference 하고 싶은 매개변수의 자료형 앞에 inout을 씀
Call by reference 하고 싶은 변수에 &를 붙여서 호출
Swift의 함수는 1급 객체 이다.
1급 객체 또는 1급 시민
다음 조건을 충족하는 객체를 1급 객체 라고 한다.
함수를 변수에 저장할 수 있다.
함수를 매개변수로 전달할 수 있다.
함수가 리턴값으로 사용될 수 있다.
클로저
익명함수
클로저 표현식은 독립적인 코드블록
클로저 표현식:
let 변수명 = {(매개변수 이름:매개변수 타입,...) -> 반환타입 in
//클로저 표현식 코드
}
후행 클로저 (trailing closure)
클로저가 함수의 마지막 argument라면 마지막 매개변수명을 생략한 후 함수 소괄호 외부에 클로저를 작성
클로저의 축약 표현들
리턴형 자료형 생략
in 과 매개변수를 생략하고 단축인자($N) 사용
return 생략
ex) let add = ~~~ return a+b
result = math (x:10, y:20, cal: add)
result = math (x:10, y:20){$0 + $1}
클래스 – 클래스로부터 만들어진 객체를 인스턴스라고 한다.
객체지향 용어 비교
Swift에서의 멤버변수 = 프로퍼티 / 멤버함수 = 메소드
클래스 선언하기
class 클래스 이름 : 부모 클래스{
// 프로퍼티
// 인스턴스 메소드
// 타입 메소드(클래스 메소드)
)
프로퍼티는
초기값이 있거나
init을 이용해 초기화하거나
옵셔널 변수로 선언하여 nil값으로 초기화 해야한다.
인스턴스를 만들고 메서드와 프로퍼티 접근
var 인스턴스명 : 클래스명 = 클래스명()
인스턴스.프로퍼티
인스턴스.인스턴스 메소드()
init() - 인스턴스 초기화 하기
init()을 하나라도 만들면 눈에 안보이는 default initializer은 없어지고, 이렇게 만든 init()을 designated initializer 라고 한다 // init()이 있다면 인스턴스를 초기화 하지 않아도 된다.
클래스 메소드
타입 메소드는 인스턴스 메소드와 동일한 방법으로 선언하지만 class나 static 키워드를 앞에 붙여서 선언한다. 타입 메소드 또는 클래스 메소드는 클래스 레벨에서 동작
- 호출: 클래스명.클래스 메소드()
Self
현재 클래스 내 매서드나 프로퍼티를 가리킬 때 메서드나 프로퍼티 앞에 self.을 붙임
매개변수와 이름이 같다면 구분하기 위해 반드시 써줘야함
프로퍼티
stored property
computed property
'1-2 > iOS프로그래밍 기초' 카테고리의 다른 글
iOS프로그래밍 기초 10주차 정리 (2) | 2022.11.07 |
---|---|
iOS프로그래밍 기초 9주차 정리 (0) | 2022.10.31 |
iOS프로그래밍 기초 7주차 정리 (0) | 2022.10.17 |
iOS프로그래밍 기초 6주차 강의 정리 (0) | 2022.10.11 |
iOS프로그래밍 기초 5주차 동영상 강의 정리 (2) | 2022.10.02 |