240919 iOS 프로그래밍기초 3주차

2024. 9. 19. 16:50·iOS프로그래밍 (2학년 2학기)
var name = "Z2A3"
var age : Int = 10
var aa = "이름은 \(name)이고, 나이는 \(age)입니다"
print(aa)

\(출력하고 싶은 변수나 상수)

  • varx:Int=10
  • print(x); print("x"); print("\(x)");print("값은 \(x)입니다.")
  • print("Int32 Min = \(Int32.min) Int32 Max = \(Int32.max)")

변하지 않는 상수 값은 let으로 사용, 중간에 변경하려 하면 오류가 남

튜플 실습

let myTuple = (10, 2.1, "Hi")
print(myTuple.1)

let myTuple1 = (count: 10, length: 12.1, message: "Hi")
print(myTuple1.1, myTuple1.length)

증가 연산자와 감소 연산자

  • 단항 연산자
  • x = x + 1 // x 변수의 값을 1 증가시킴 
  • x = x - 1 // x 변수의 값을 1 감소시킴 
  • 위의 표현식은 x의 값을 1 증감

 swift 에는 ++나 --같은 연산자가 없음!

 

비교 연산자

  • ==는 값이 같은가?
  • ===는 동일한 메모리 주소인가?

범위 연산자

  • 닫힌 범위 연산자(closed range operator)
  • x...y ➡️ x에서 시작하여 y로 끝나는 범위에 포함된 숫자
  • 5...8 ➡️ 5, 6, 7, 8
  • 반 열린 범위 연산자(half-open range operator)
  • x..<y ➡️ x부터 시작하여 y가 포함되지 않는 모든 숫자
  • 5..<8 ➡️ 5, 6, 7

클래스, 객체, 인스턴스의 차이

 

_로 참조체 생략 가능

for _ in 1...5 { 
	print("안녕")
}

배열의 항목 접근

repeat~while 반복문

  • swift 1.x의 do ... while 반복문을 대신하는 문
  • repeat ... while 반복문의 몸체는 적어도 한번은 실행

swift에서는 for문이나 if문을 사용할 때 뒤에 나올 실행코드가 한문장이라도 꼭 중괄호 안에 넣어줘야 한다.

continue문

  • continue 문은 반복문에서 continue문 이후의 모든 코드를 건너뛰고 반복문의 상단 시작 위치로 돌아감

if문 조건에서 콤마:조건나열(condition-list)

var x = 1
var y = 2
if x == 1 && y==2 { //논리식이 둘 다 참일 때
	print(x,y) 
}
if x == 1, y==2 { //조건이 둘 다 참일 때, 두 조건을 콤마로 연결한 condition-list 
	print(x,y)
}

guard문 -> swift에서 가장 중요한 조건문

 

switch-case문 예제

switch-case에서 where절 사용하기

  • where절을 switch case에 부가적인 조건을 추가하기 위하여 사용
  • 값이 속하는 범위뿐만 아니라 그 숫자가 홀수인지 짝수인지도 검사

where : 조건을 추가

  • 특정 패턴과 결합하여 조건을 추가

fallthrough

  • C/C++, objective-C와 달리 case문 다음에 break 문을 포함할 필요가 없음
  • Swift는 일치하는 case문을 만나면 자동으로 빠져나옴
  • case별로 빠져 나가지 않고 아래로 계속 내려가게 하려면 fallthrough 문 사용

swift에서 값이 없을 때도 변수를 사용하고 싶을 때는 이렇게 사용한다. (Optional )

null은 swift에선 nil

자료형이 정해지지 않았을 때 [변수이름 !] 으로 작성하면 옵셔널 래핑을 강제로 풀 수 있다.

nil이 아닐 때만 !를 이용해서 래핑을 풀 수 있다. 값이 없을 때는 !를 이용해서 래핑을 풀면 안된다.

forced unwrapping

주의 : if x!=nil 이라고 쓰면 안됨

옵셔널 타입 강제 언래핑(forced unwrapping) 2 : optional binding

  • 강제 언래핑하는 또 다른 방법으로, 옵셔널 바인딩(optional binding)을 이용하여 옵셔널에 할당된 값을 임시 변수 또는 상수에 할당

2행의 x = 10을 쓰지 않으면 else로 넘어간다.

위 사진의 3열은 다음 코드와 같이 사용해도 같은 값이 출력된다.

  1. if let xx = x
  2. if let x = x
  3. if let x

Implicitly Unwrapped Optional

  • 형 다음에 ?가 아닌 !를 쓰는 옵셔널형
    • Int!, String!
  • 먼저 일반 옵셔널 값으로 사용하려고 하지만, optional로 사용할 수 없는 경우 Swift는 값을 자동으로 강제로 품
  • Optional로 사용할 수 없으면 자동으로 unwrap함

Int?와 Int!의 주요 차이점

 

특성 Int? Int!
선언 방식 var x: Int? var x: Int!
기본값 nil nil
강제 언래핑 필요 필요 (x!) 불필요
안전성 더 안전 덜 안전
사용 시점 값이 있을 수도 있고 없을 수도 있는 경우 값이 항상 존재한다고 확신할 때
nil 체크 권장됨 생략 가능 (하지만 위험)
옵셔널 바인딩 필요 (if let, guard let 등) 불필요 (하지만 권장됨)
런타임 크래시 위험 낮음 높음 (nil일 때 접근 시)
Int?는 더 안전하고 명시적인 옵셔널 처리를 요구하는 반면, Int!는 편의성을 제공하지만 잘못 사용하면 런타임 오류의 위험이 있다.
일반적으로 Int?의 사용이 더 권장됨
 
nil-coalescing operator (nil병합연산자) ??
  • 옵셔널변수 ?? nil일 때 할당되는 값
  • 옵셔널 변수의 값이 nil이면 ?? 다음 값으로 할당됨
  • 옵셔널 변수의 값이 nil이 아니면 언래핑된 값이 나옴
 
참고자료 : 한성현 교수님 수업자료
저작자표시

'iOS프로그래밍 (2학년 2학기)' 카테고리의 다른 글

241009 iOS프로그래밍기초 6주차  (1) 2024.10.14
241002 iOS프로그래밍기초 5주차  (2) 2024.10.14
240926 iOS프로그래밍기초 4주차  (3) 2024.09.26
240912 iOS프로그래밍기초 2주차  (0) 2024.09.12
240905 iOS프로그래밍기초 1주차  (2) 2024.09.05
'iOS프로그래밍 (2학년 2학기)' 카테고리의 다른 글
  • 241002 iOS프로그래밍기초 5주차
  • 240926 iOS프로그래밍기초 4주차
  • 240912 iOS프로그래밍기초 2주차
  • 240905 iOS프로그래밍기초 1주차
Z2AE
Z2AE
  • Z2AE
    딩코.log
    Z2AE
  • 전체
    오늘
    어제
    • 분류 전체보기 (65)
      • C++ 프로그래밍 (1학년 2학기) (12)
      • 서버프로그래밍 (1학년 2학기) (0)
      • C# 프로그래밍 (1학년 2학기) (2)
      • 프론트엔드 웹개발 (1학년 2학기) (2)
      • 데이터베이스 (2학년 1학기) (8)
      • 자료구조 (2학년 1학기) (2)
      • JAVA프로그래밍 (2학년 1학기) (7)
      • PHP쇼핑몰실무 (2학년 1학기) (2)
      • 운영체제 (2학년 1학기) (3)
      • 모바일게임개발 (2학년 1학기) (1)
      • iOS프로그래밍 (2학년 2학기) (11)
      • 네트워크보안 (2학년 2학기) (1)
      • iOS프로그래밍실무 (3학년 1학기) (9)
      • 소프트웨어설계 (3학년 1학기) (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Z2AE
240919 iOS 프로그래밍기초 3주차
상단으로

티스토리툴바