ios 클라이언트 연구 노트(2): Swift의 기초 배우기

Swift 공식 문서
Swift 공식 문서는 Swift 언어 사양, 표준 라이브러리, 프로그래밍 가이드 등을 포함하는 Swift 학습을 위한 가장 권위 있는 자료 중 하나입니다. 공식 Swift 웹사이트에서 최신 문서를 찾을 수 있습니다: https://swift.org/documentation/

공식 Swift 문서에는 다음이 포함됩니다.

1. 스위프트 프로그래밍 언어

이것은 Swift의 기본 구문, 데이터 유형, 함수, 제어 흐름, 객체 지향 프로그래밍 등을 포함하는 Swift 언어의 공식 사양입니다. 예:

// 基础语法示例
print("Hello, world!")
let a = 5
let b = 6
let c = a + b
print("The sum of \(a) and \(b) is \(c)")
  1. 기본 문법

Swift의 기본 구문에는 변수, 상수, 데이터 유형, 연산자, 표현식, 명령문, 함수 등이 포함됩니다.

예:

// 变量和常量
var message = "Hello, world!"
let pi = 3.1415926

// 数据类型
let age: Int = 25
let height: Double = 1.75
let isStudent: Bool = true
let name: String = "Alice"

// 运算符和表达式
let sum = 1 + 2
let product = 3 * 4
let quotient = 10 / 3
let remainder = 10 % 3

// 语句
if age >= 18 {
    print("You are an adult.")
} else {
    print("You are a minor.")
}

// 函数
func sayHello(name: String) {
    print("Hello, \(name)!")
}
sayHello(name: "Bob")
  1. 데이터 유형

Swift는 정수, 실수, 부울, 문자열, 배열, 사전, 튜플 등 다양한 데이터 유형을 지원합니다.

예:

// 整型
let age: Int = 25
let count: UInt = 10

// 浮点型
let height: Double = 1.75
let weight: Float = 60.5

// 布尔型
let isStudent: Bool = true

// 字符串
let name: String = "Alice"

// 数组
let numbers: [Int] = [1, 2, 3, 4, 5]

// 字典
let scores: [String: Int] = ["Alice": 90, "Bob": 80]

// 元组
let person: (name: String, age: Int) = ("Alice", 25)
  1. 기능

Swift의 함수는 다중 매개변수, 기본 매개변수, 가변 매개변수, 함수 유형 및 함수 중첩과 같은 기능을 지원합니다.

예:

// 多个参数
func add(a: Int, b: Int) -> Int {
    return a + b
}
let sum = add(a: 1, b: 2)

// 默认参数
func sayHello(name: String = "World") {
    print("Hello, \(name)!")
}
sayHello() // 输出 "Hello, World!"
sayHello(name: "Alice") // 输出 "Hello, Alice!"

// 可变参数
func average(numbers: Double...) -> Double {
    var sum = 0.0
    for number in numbers {
        sum += number
    }
    return sum / Double(numbers.count)
}
let avg = average(numbers: 1.0, 2.0, 3.0, 4.0)

// 函数类型
func add(a: Int, b: Int) -> Int {
    return a + b
}
var operation: (Int, Int) -> Int = add
let result = operation(1, 2)

// 函数嵌套
func outerFunc() -> Int {
    func innerFunc() -> Int {
        return 10
    }
    return innerFunc()
}
let result = outerFunc() // 返回 10
  1. 제어 흐름

Swift는 if 문, for-in 루프, while 루프 및 switch 문과 같은 제어 흐름 문을 지원합니다.

예:

// if语句
let age = 25
if age >= 18 {
    print("You are an adult.")
} else {
    print("You are a minor.")
}

// for-in循环
let numbers = [1, 2, 3, 4, 5]
for number in numbers {
    print(number)
}

// while循环
var count = 0
while count < 10 {
    print(count)
    count += 1
}

// switch语句
let grade = 90
switch grade {
case 0..<60:
    print("Fail")
case 60..<80:
    print("Pass")
case 80..<90:
    print("Good")
default:
    print("Excellent")
}
  1. 객체 지향 프로그래밍

Swift는 클래스, 구조, 열거형, 속성, 메서드, 상속, 프로토콜 및 확장과 같은 기능을 포함하여 개체 지향 프로그래밍을 지원합니다.

예:

// 类
class Person {
    var name: String
    var age: Int
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
    func sayHello() {
        print("Hello, \(name)!")
    }
}
let person = Person(name: "Alice", age: 25)
person.sayHello()

// 结构体
struct Point {
    var x: Int
    var y: Int
}
var point = Point(x: 1, y: 2)
point.x = 3

// 枚举
enum Color {
    case red
    case green
    case blue
}
let color = Color.red

// 属性
class Person {
    var name: String
    var age: Int {
        didSet {
            print("Age changed from \(oldValue) to \(age).")
        }
    }
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}
let person = Person(name: "Alice", age: 25)
person.age = 30 // 输出 "Age changed from 25 to 30."

// 方法
class Person {
    var name: String
    var age: Int
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
    func sayHello() {
        print("Hello, \(name)!")
    }
}
let person = Person(name: "Alice", age: 25)
person.sayHello()

// 继承
class Student: Person {
    var grade: Int
    init(name: String, age: Int, grade: Int) {
        self.grade = grade
        super.init(name: name, age: age)
    }
}
let student = Student(name: "Bob", age: 18, grade: 90)

// 协议
protocol Printable {
    func printMessage()
}
class MyClass: Printable {
    func printMessage() {
        print("Hello, world!")
    }
}
let obj = MyClass()
obj.printMessage()

// 扩展
extension Int {
    var square: Int {
        return self * self
    }
}
let number = 5
let square = number.square // 返回 25

2. Cocoa 및 Objective-C와 함께 Swift 사용(Swift, Cocoa 및 Objective-C 사용)

Cocoa 및 Objective-C와 함께 Swift 사용(Cocoa 및 Objective-C와 함께 Swift 사용)에는 주로 다음과 같은 측면이 포함됩니다.

  1. Swift 언어를 사용하여 iOS 및 macOS 애플리케이션을 개발하는 방법

Swift는 그래픽 인터페이스 응용 프로그램, 명령줄 도구, 게임 등 다양한 유형의 응용 프로그램을 개발하는 데 사용할 수 있는 iOS 및 macOS 플랫폼용 프로그래밍 언어입니다. Swift로 iOS 및 macOS 애플리케이션을 개발하려면 Xcode 통합 개발 환경을 사용해야 합니다.

예:

// 使用Swift编写iOS应用程序
import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21))
        label.center = CGPoint(x: 160, y: 284)
        label.textAlignment = .center
        label.text = "Hello, world!"
        self.view.addSubview(label)
    }
}
  1. Objective-C 및 Cocoa 프레임워크와 상호 작용하는 방법

Objective-C는 iOS 및 macOS 개발을 위한 프로그래밍 언어이며, Cocoa 프레임워크는 그래픽 인터페이스 애플리케이션 개발을 위해 Apple에서 제공하는 프레임워크입니다. Swift 언어는 Objective-C 및 Cocoa 프레임워크와 원활하게 상호 작용할 수 있으므로 Swift 개발자는 Objective-C 및 Cocoa 프레임워크의 풍부한 리소스와 성숙한 기술을 활용할 수 있습니다.

예:

// 在Swift中调用Objective-C代码
import MyObjectiveCModule
let obj = MyObjectiveCClass()
obj.sayHello()

// 在Swift中使用Cocoa框架
import Cocoa
let app = NSApplication.shared
let window = NSWindow(contentRect: NSRect(x: 0, y: 0, width: 200, height: 200),
                      styleMask: [.titled, .closable, .miniaturizable, .resizable],
                      backing: .buffered,
                      defer: false)
window.makeKeyAndOrderFront(nil)
app.run()

요컨대 Swift와 Cocoa 및 Objective-C 간의 원활한 상호 작용을 통해 개발자는 Swift에서 Cocoa 프레임워크와 Objective-C 코드를 사용하고 Objective-C에서도 Swift 코드를 사용할 수 있습니다. 이는 개발자에게 더 많은 선택권과 유연성을 제공하여 고품질 iOS 및 macOS 애플리케이션을 더 빠르게 개발할 수 있도록 지원합니다.

3. The Swift Standard Library Reference (스위프트 표준 라이브러리 레퍼런스)

이 파트에서는 ​​문자열, 배열, 사전, 컬렉션과 같은 일반적인 데이터 유형과 일반적으로 사용되는 함수 및 연산자를 포함하여 Swift 표준 라이브러리의 다양한 유형, 함수 및 프로토콜을 소개합니다. 예:

// 使用Swift标准库中的数组
var numbers = [1, 2, 3, 4, 5]
numbers.append(6)
print(numbers)

Swift 표준 라이브러리는 개발자가 고품질 Swift 애플리케이션을 더 빠르게 개발하는 데 도움이 되는 다양한 유형, 기능 및 프로토콜을 포함하는 Swift 언어의 핵심 구성 요소입니다. 다음은 Swift 표준 라이브러리의 일반적인 유형, 함수 및 연산자에 대한 간략한 소개입니다.

  1. 문자열(문자열)

Swift의 문자열 유형은 다양한 방법으로 조작하고 처리할 수 있는 유니코드로 인코딩된 일련의 문자입니다. Swift 표준 라이브러리는 스플라이싱, 가로채기, 검색, 바꾸기 등을 포함하여 풍부한 문자열 처리 기능과 메서드를 제공합니다.

예:

// 字符串拼接
let firstName = "Alice"
let lastName = "Smith"
let fullName = firstName + " " + lastName

// 字符串截取
let str = "Hello, world!"
let index = str.index(str.startIndex, offsetBy: 5)
let substr = str[..<index] // 输出 "Hello"

// 字符串搜索
let str = "Hello, world!"
let range = str.range(of: "world")
if let range = range {
    print("Found at index \(str.distance(from: str.startIndex, to: range.lowerBound)).")
} else {
    print("Not found.")
}

// 字符串替换
let str = "Hello, world!"
let newStr = str.replacingOccurrences(of: "world", with: "Swift")
  1. 배열(배열)

Swift 배열은 동일한 유형의 여러 요소를 저장할 수 있는 정렬된 컬렉션 유형입니다. Swift 표준 라이브러리는 추가, 삭제, 정렬, 검색 등을 포함하여 풍부한 배열 조작 기능 및 메서드를 제공합니다.

예:

// 创建数组
var numbers = [1, 2, 3, 4, 5]

// 添加元素
numbers.append(6)

// 删除元素
numbers.remove(at: 2)

// 排序
numbers.sort()

// 搜索
let index = numbers.firstIndex(of: 3)
  1. 사전

Swift 사전은 서로 다른 유형의 여러 요소를 저장할 수 있는 정렬되지 않은 키-값 쌍 모음입니다. Swift 표준 라이브러리는 추가, 삭제, 정렬, 검색 등을 포함하여 풍부한 사전 작업 기능과 메서드를 제공합니다.

예:

// 创建字典
var scores = ["Alice": 90, "Bob": 80, "Charlie": 70]

// 添加元素
scores["David"] = 60

// 删除元素
scores.removeValue(forKey: "Charlie")

// 排序
let sortedScores = scores.sorted { $0.value > $1.value }

// 搜索
let score = scores["Alice"]
  1. 컬렉션(세트)

Swift 컬렉션은 동일한 유형의 여러 요소를 저장할 수 있는 고유한 요소의 정렬되지 않은 컬렉션입니다. Swift 표준 라이브러리는 추가, 삭제, 교차, 합집합 등을 포함하여 풍부한 설정 작업 함수 및 메서드를 제공합니다.

예:

// 创建集合
var numbers: Set<Int> = [1, 2, 3, 4, 5]

// 添加元素
numbers.insert(6)

// 删除元素
numbers.remove(2)

// 交集
let otherNumbers: Set<Int> = [3, 4, 5, 6, 7]
let intersection = numbers.intersection(otherNumbers)

// 并集
let union = numbers.union(otherNumbers)
  1. 공통 기능

Swift 표준 라이브러리에는 맵, 필터, 축소 등과 같이 일반적으로 사용되는 많은 기능도 포함되어 있습니다. 이러한 기능을 통해 개발자는 데이터를 보다 편리하게 처리하고 변환할 수 있습니다.

예:

// 定义一个整数数组
let numbers = [1, 2, 3, 4, 5]

// 使用map函数将数组中的每个元素平方,并将结果存储在新数组squares中
let squares = numbers.map { $0 * $0 }

// 使用filter函数筛选出数组中的偶数,并将结果存储在新数组evenNumbers中
let evenNumbers = numbers.filter { $0 % 2 == 0 }

// 使用reduce函数将数组中的元素相加,得到它们的总和
let sum = numbers.reduce(0) { $0 + $1 }

  1. 일반 연산자

Swift 표준 라이브러리에는 또한 더하기, 빼기, 곱하기, 나누기, 비교, 논리 연산 등과 같이 일반적으로 사용되는 많은 연산자가 포함되어 있습니다. 이러한 연산자는 개발자가 데이터 조작 및 비교를 보다 편리하게 수행하는 데 도움이 될 수 있습니다.

예:

// 加减乘除
let a = 10
let b = 3
let sum = a + b
let difference = a - b
let product = a * b
let quotient = a / b

// 比较
let x = 10
let y = 20
let isGreater = x > y
let isEqual = x == y
let isLess = x < y

// 逻辑运算
let p = true
let q = false
let notP = !p
let and = p && q
let or = p || q

요컨대, Swift 표준 라이브러리는 다양한 유형, 기능 및 프로토콜을 포함하는 Swift 언어의 핵심 구성 요소로, 개발자가 고품질 Swift 애플리케이션을 더 빠르게 개발할 수 있도록 도와줍니다. 개발자는 Swift 표준 라이브러리의 다양한 유형, 기능 및 연산자를 잘 활용하여 개발 작업을 완료해야 합니다.

4. 스위프트 패키지 매니저

이 부분에서는 Swift 패키지를 생성, 컴파일 및 게시하는 방법을 포함하여 Swift 패키지 관리자를 사용하는 방법을 소개합니다. 예:

// 创建一个Swift包
mkdir MyPackage
cd MyPackage
swift package init

Swift Package Manager(Swift Package Manager, SPM이라고 함)는 Swift 프로젝트에서 종속성을 관리하고 프로세스를 빌드하기 위해 Swift에서 공식적으로 제공하는 패키지 관리 도구입니다. SPM은 개발자가 Swift 패키지를 보다 편리하게 생성, 컴파일 및 게시할 수 있도록 도와줍니다.

  1. 스위프트 패키지 만들기

SPM으로 Swift 패키지를 생성하는 것은 매우 간단합니다. 터미널에서 다음 명령을 실행하기만 하면 됩니다.

swift package init --type library

이 명령은 기본 Swift 소스 파일과 Package.swift 파일을 포함하는 새 Swift 패키지를 생성합니다.

  1. Swift 패키지 컴파일

SPM으로 Swift 패키지를 컴파일하는 것도 매우 간단합니다. 터미널에서 다음 명령을 실행하기만 하면 됩니다.

swift build

이 명령은 SPM을 사용하여 Swift 패키지의 모든 종속성을 자동으로 다운로드 및 컴파일하고 결과 라이브러리 파일을 .build 디렉토리에 저장합니다.

  1. Swift 패키지 게시

SPM을 사용하여 Swift 패키지를 게시하는 것도 매우 간단합니다. 터미널에서 다음 명령을 실행하기만 하면 됩니다.

swift package publish

이 명령은 SPM을 사용하여 Swift 패키지를 패키징하고 Swift Package Registry에 업로드하므로 다른 개발자가 패키지를 쉽게 사용할 수 있습니다.

예:

다음은 SPM을 사용하여 Swift 패키지를 생성, 컴파일 및 게시하는 예입니다.

  1. 스위프트 패키지 만들기

터미널에서 다음 명령을 실행합니다.

swift package init --type library

이 명령은 기본 Swift 소스 파일과 Package.swift 파일을 포함하는 MyLibrary라는 Swift 패키지를 생성합니다.

  1. Swift 코드 작성

Sources 디렉터리에서 기본 Swift 소스 파일인 Sources/MyLibrary/MyLibrary.swift를 열고 다음 코드를 작성합니다.

public func sayHello(to name: String) {
    print("Hello, \(name)!")
}

이 코드는 지정된 이름으로 인사말을 인쇄하는 공용 함수 sayHello를 정의합니다.

  1. Swift 패키지 컴파일

터미널에서 다음 명령을 실행합니다.

swift build

이 명령은 SPM을 사용하여 Swift 패키지의 모든 종속성을 자동으로 다운로드 및 컴파일하고 결과 라이브러리 파일을 .build 디렉토리에 저장합니다.

  1. 스위프트 패키지 사용

다른 Swift 프로젝트에서는 다음 명령문을 사용하여 MyLibrary 패키지를 가져올 수 있습니다.

import MyLibrary

그런 다음 MyLibrary 패키지의 sayHello 함수를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

MyLibrary.sayHello(to: "World")
  1. Swift 패키지 게시

터미널에서 다음 명령을 실행합니다.

swift package publish

이 명령은 SPM을 사용하여 MyLibrary 패키지를 패키징하고 Swift Package Registry에 업로드하므로 다른 개발자가 패키지를 쉽게 사용할 수 있습니다.

전반적으로 Swift Package Manager는 개발자가 Swift 패키지를 더 빠르고 쉽게 생성, 컴파일 및 게시할 수 있도록 도와주는 매우 편리한 도구입니다. 개발자는 SPM을 사용하여 Swift 프로젝트의 종속성을 관리하고 Swift 패키지를 Swift Package Registry에 게시하여 다른 개발자와 코드를 공유할 수도 있습니다.

5. 신속한 진화

이 부분에서는 Swift 버전 업데이트, 개선 사항 및 언어 기능의 새로운 추가 사항 등을 포함하여 Swift 언어의 진화를 소개합니다. 예:

// Swift 4中新增的字符串插值特性
let name = "Alice"
let age = 25
print("\(name) is \(age) years old.")

Swift 언어의 진화는 Apple이 Swift 1.0 버전을 출시한 2014년으로 거슬러 올라갑니다. 그 이후로 Swift는 Swift 2.0, Swift 3.0, Swift 4.0, Swift 5.0 및 Swift 5.1을 포함하여 여러 버전의 업데이트 및 개선을 거쳤습니다. 각 릴리스는 Swift를 더욱 강력하고 사용하기 쉽게 만드는 많은 새로운 언어 기능과 개선 사항을 소개합니다.

다음은 Swift 언어의 몇 가지 중요한 발전입니다.

  1. 스위프트 2.0

2015년에 출시된 Swift 2.0은 오류 처리, 프로토콜 확장, 구문 개선 등 많은 새로운 언어 기능과 개선 사항을 도입했습니다. 가장 중요한 개선 사항 중 하나는 개발자가 프로그램에서 오류 조건을 더 잘 처리할 수 있도록 하는 오류 처리의 도입입니다.

  1. 스위프트 3.0

2016년에 출시된 Swift 3.0은 Swift 언어의 주요 버전 업데이트입니다. 이 릴리스에는 API 설계 지침, 구문 개선, 패키지 관리자 개선 등을 포함하여 많은 새로운 언어 기능과 개선 사항이 도입되었습니다. 가장 중요한 개선 사항 중 하나는 표준 라이브러리의 재설계와 많은 새로운 유형 및 기능의 도입으로 Swift를 더욱 강력하고 사용하기 쉽게 만듭니다.

  1. 스위프트 4.0

2017년에 출시된 Swift 4.0은 Swift 언어의 주요 버전 업데이트입니다. 이 릴리스에는 문자열 및 컬렉션 유형에 대한 개선 사항, 인코딩 및 디코딩 개선 사항, 구문 개선 사항 등 많은 새로운 언어 기능과 개선 사항이 도입되었습니다. 가장 중요한 개선 사항 중 하나는 Codable 프로토콜의 도입으로 개발자가 객체를 더 쉽게 인코딩하고 디코딩할 수 있습니다.

  1. 스위프트 5.0

2019년에 출시된 Swift 5.0은 Swift 언어의 주요 버전 업데이트입니다. 이 릴리스에는 동적 호출, ABI 안정성, 문자열 개선 등 많은 새로운 언어 기능과 개선 사항이 도입되었습니다. 가장 중요한 개선 사항 중 하나는 개발자가 동적 호출 작업을 보다 편리하게 수행할 수 있는 동적 호출 기능의 도입입니다.

  1. 스위프트 5.1

2019년에 출시된 Swift 5.1은 Swift 언어의 주요 버전 업데이트입니다. 이 릴리스에서는 함수 인수, 속성 래퍼, 새로운 구문 설탕 등에 대한 개선 사항을 포함하여 많은 새로운 언어 기능과 개선 사항을 소개합니다. 가장 중요한 개선 사항 중 하나는 개발자가 속성 캡슐화 및 액세스 제어를 보다 쉽게 ​​수행할 수 있도록 하는 속성 래퍼 기능의 도입입니다.

요약하면, Swift 언어의 진화는 Swift를 더욱 강력하고 사용하기 쉽게 만든 많은 새로운 언어 기능과 개선 사항을 도입했습니다. 개발자는 이러한 새로운 기능과 개선 사항을 활용하여 개발 효율성과 코드 품질을 개선할 수 있습니다. 동시에 Swift 언어의 진화는 Swift 언어에 대한 Apple의 장기적인 투자와 지원을 보여줍니다.

저자: 아이베사

추천

출처blog.csdn.net/goodgoodstudy___/article/details/130273902