Google Play vs iOS App Store | Store Stats for Mobile Apps
Google Play vs iOS App Store. We compare how many apps they have, the distribution of free vs paid apps, games vs non-gaming apps, and more!
42matters.com

2026년 3월 3일 기준 앱 수
https://www.mobileindex.com/mi-chart/realtime-rank/
모바일인덱스 INSIGHT
국내 유일의 DMP 기반 앱 분석 서비스입니다. 앱 이용성 및 심화 분석 데이터, 경쟁앱 교차 분석 데이터 등과 앱 마켓 분석 데이터를 통해 선명한 모바일 시장 분석이 가능합니다.
www.mobileindex.com

무료 게임 순위

유료 게임 순위
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/
Documentation
docs.swift.org
한국어 버전
https://bbiguduk.github.io/swift-book-korean/documentation/tsplk/
Documentation
bbiguduk.github.io

스위프트 문법 정리 사이트
스위프트 버전별 내용(추가 및 수정) 정리
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/revisionhistory
Documentation
docs.swift.org

Swift는 Apple의 운영 체제에서 주로 사용되지만, 다양한 플랫폼을 지원하고 있으며, 현대적인 프로그래밍 언어로서 여러 강력한 특징을 갖고 있습니다.

var name = "John"
let age = 30
var name: String = "Alice"
var age: Int = 25
var name: String? = "John"
name = nil // 옵셔널 변수는 nil을 가질 수 있음.
if age >= 18 {
print("Adult")
} else {
print("Minor")
}
for i in 1...5 {
print(i)
}
func greet(name: String) -> String {
return "Hello, \(name)"
}
print(greet(name: "John"))
class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
let multiply = { (a: Int, b: Int) -> Int in
return a * b
}
print(multiply(2, 3)) // 6
enum Direction {
case north, south, east, west
}
var currentDirection = Direction.north
let number = 5
switch number {
case 1:
print("One")
case 2...10:
print("Between 2 and 10")
default:
print("Other")
}
이러한 문법들은 스위프트의 기본적인 구조를 이해하는 데 중요한 요소들입니다.
A: RESTful API는 HTTP를 사용해 데이터와 리소스를 주고받으며, 각 요청이 고유한 URL을 통해 처리되는 아키텍처 스타일입니다.
A: HTTPS는 HTTP에 SSL/TLS 암호화가 추가된 보안 프로토콜로, 데이터를 암호화하여 안전한 통신을 제공합니다.
A: 인덱스는 데이터베이스에서 데이터를 빠르게 검색할 수 있도록 도와주는 자료구조입니다.
A: SQL은 관계형 데이터베이스로 구조가 정해져 있고, NoSQL은 비정형 데이터를 저장하며 확장성에 강한 데이터베이스입니다.
A: MVC는 Model-View-Controller의 약자로, 애플리케이션을 데이터(Model), 사용자 인터페이스(View), 제어 로직(Controller)로 분리하는 디자인 패턴입니다.
A: 비동기 처리는 작업을 기다리지 않고 다른 작업을 실행하면서 결과를 나중에 처리하는 방식으로, 성능을 개선합니다.
A: OAuth 2.0은 외부 애플리케이션이 사용자 데이터를 안전하게 접근할 수 있도록 하는 인증 프로토콜입니다.
A: Git은 분산형 버전 관리 시스템이고, GitHub는 Git 저장소를 호스팅하는 플랫폼입니다.
A: CORS는 다른 출처의 리소스를 안전하게 공유하기 위해 브라우저가 요청을 허용할지 여부를 결정하는 보안 메커니즘입니다.
A: JWT는 인증 정보를 JSON 형식으로 안전하게 전송할 수 있도록 하는 토큰 기반 인증 방식입니다.
이러한 질문과 답변을 준비해두면, 신입 웹 개발자나 백엔드 개발자로 취업 준비에 많은 도움이 될 것입니다.
옵셔널 값이 nil이 아닌 경우에만 안전하게 값을 추출하는 방법입니다.
var name: String? = "John"
if let unwrappedName = name {
print("Name is \(unwrappedName)") // 옵셔널 값이 있을 경우 실행
} else {
print("Name is nil") // 옵셔널 값이 nil일 경우 실행
}
옵셔널 값이 nil이 아니라고 확신할 때 사용하는 방법입니다. 만약 nil이면 런타임 오류가 발생합니다.
var name: String? = "John"
let unwrappedName = name! // 옵셔널 값이 nil이 아님을 확신하고 사용
print(unwrappedName)
옵셔널 값이 nil일 수 있는 경우, 메서드나 프로퍼티에 안전하게 접근하는 방법입니다. nil이면 체인된 표현식이 nil을 반환합니다.
class Person {
var name: String?
}
var person: Person? = Person()
person?.name = "John"
print(person?.name) // 옵셔널 체이닝을 사용하여 안전하게 값 접근
옵셔널 값을 언랩할 때, 조건이 거짓일 경우 즉시 빠져나가는 방식입니다. 보통 함수나 메서드의 초기 조건을 확인할 때 유용합니다.
func greet(name: String?) {
guard let unwrappedName = name else {
print("Name is nil")
return
}
print("Hello, \(unwrappedName)")
}
greet(name: "John") // "Hello, John"
greet(name: nil) // "Name is nil"
옵셔널이 nil일 경우, 기본값을 제공하는 방법입니다.
var name: String? = nil
let unwrappedName = name ?? "Default Name" // name이 nil이면 "Default Name"이 사용됨
print(unwrappedName) // "Default Name"
flatMap은 옵셔널 값이 있을 때만 처리하며, 여러 개의 옵셔널 값을 함께 처리할 때 유용합니다.
var number: String? = "123"
let numberInt = number.flatMap { Int($0) }
print(numberInt) // 옵셔널 언랩 후 값이 Int로 변환
map은 옵셔널에 포함된 값을 변환할 때 사용합니다.
var name: String? = "John"
let uppercasedName = name.map { $0.uppercased() }
print(uppercasedName) // "JOHN"
옵셔널을 안전하게 언랩하는 방법은 여러 가지가 있으며, 각각의 방법은 상황에 맞게 적절히 선택해야 합니다.
if let과 guard let은 주로 값이 nil일 가능성이 있을 때 안전하게 사용하는 방식이며, !을 이용한 강제 언랩은 값이 nil이 아님을 확신할 때만 사용해야 합니다.

2026년 3월 3일자 영화 순위
https://www.kobis.or.kr/kobisopenapi/homepg/main/main.do
영화진흥위원회 오픈API
OPEN API 서비스 영화진흥위원회 영화관입장권통합전산망에서 제공하는 오픈API 서비스로 더욱 풍요롭고 편안한 영화 서비스를 즐겨보세요.
www.kobis.or.kr
API 키를 발급받아 JSON으로 불러오면 아래와 같이 나옵니다.

보기 좋게 나오게 하려면 pretty print 체크합니다.

JSON
https://codebeautify.org/jsonviewer
Best JSON Viewer and JSON Beautifier Online
Online JSON Viewer, JSON Beautifier and Formatter to beautify and tree view of JSON data - It works as JSON Pretty Print to pretty print JSON data.
codebeautify.org
Optional은 값이 있을 수도 있고(nil), 없을 수도 있는 타입입니다.
Swift는 nil로 인한 런타임 크래시를 줄이기 위해 Optional을 사용합니다.
var name: String? = "Lee"
name = nil
Optional 타입은 사용하기 전에 반드시 언래핑해야 합니다.
if let name = name {
print(name)
}
let value = optionalValue ?? "default"
guard let name = name else { return }
print(name)
guard는 early exit 패턴에 적합합니다.
구분structclass
| 타입 | 값 타입 | 참조 타입 |
| 상속 | 불가 | 가능 |
| 메모리 | Stack | Heap |
| 복사 | 값 복사 | 참조 복사 |
| deinit | 없음 | 있음 |
Swift에서는 특별한 이유가 없다면 struct 사용을 권장합니다.
var a = MyStruct()
var b = a // 값 복사
ARC(Automatic Reference Counting)는 객체의 참조 횟수를 자동으로 관리하여 메모리를 해제하는 시스템입니다.
강한 참조 순환이 발생하면 메모리 누수가 생길 수 있습니다.
구분weakunowned
| Optional 여부 | Optional | Non-optional |
| nil 가능성 | 있음 | 없음 |
| 안전성 | 더 안전 | 잘못 사용 시 크래시 |
클로저가 외부 객체를 강하게 참조하면 강한 참조 순환이 발생할 수 있습니다.
이를 방지하기 위해 캡처 리스트를 사용합니다.
{ [weak self] in
self?.doSomething()
}
func fetch(completion: @escaping () -> Void)
프로토콜은 특정 기능이나 속성의 구현을 강제하는 설계 규약입니다.
protocol Drivable {
func drive()
}
다형성을 지원하며, 의존성을 줄이고 테스트가 용이해집니다.
Delegate 패턴은 객체 간 1:1 이벤트 전달 패턴입니다.
보통 weak 참조로 선언하여 강한 참조 순환을 방지합니다.
let data = try await fetchData()
동기 코드처럼 작성할 수 있습니다.
actor는 동시성 환경에서 데이터 경쟁을 방지하기 위한 타입입니다.
actor Counter {
var value = 0
}
멀티스레드 환경에서 안전하게 상태를 관리할 수 있습니다.
var name: String
var fullName: String {
firstName + lastName
}
enum NetworkResult {
case success(Data)
case failure(Error)
}
Swift의 enum은 단순 상수가 아니라 하나의 완전한 타입으로 동작합니다.
| iOS 프로그래밍실무_6주차_옵셔널 체이닝(Optional Chaining) (0) | 2026.04.13 |
|---|---|
| 5주차_iOS프로그래밍_맛집 iOS앱 개발 (0) | 2026.04.06 |
| iOS프로그래밍_4주차_클래스(class) 상속 (0) | 2026.03.30 |
| iOS프로그래밍_3주차_무드등 iOS앱을 만들며Xcode와 Swift 친숙해지기 (0) | 2026.03.23 |
| iOS프로그래밍_2주차_데이터 타입(자료형)상수(let), 변수(var) (0) | 2026.03.16 |