Swift 언어/Swift 문법 정리
Swift에서 구조체(struct)와 클래스(class)는 데이터와 기능을 캡슐화하기 위해 사용되는 기본적인 설계도임. 이번 포스팅에서는 구조체와 클래스의 기본 문법과 차이점을 정리해봄.1. 구조체의 기본 구조: 구조체는 값 타입(Value Type)으로, 데이터를 캡슐화하기 위해서 사용됨. Swift에서는 구조체가 기본적으로 설계도 역할을 함struct StructName { // property (속성) // method (메서드) // initializer (생성자) // subscript (서브스크립트)} struct Person { var name: String // 속성 var age: Int func speak() { // 메서드 print(..
iOS 개발하면서 Optional 개념은 필수로 알아야 함. Swift에서 값이 없을 수도 있다는 걸 표현하려면 Optional을 써야 함. 이번 포스팅에서는 Optional 기본 개념, Unwrapping, Optional Binding에 대해서 정리해볼 것임. 1. Optional 이란? 🤔let num: Int? = nil // 값이 없음let name: String? = "Doseo" // 값이 있음Optional 타입 변수는 값이 없을 때 nil을 저장할 수 있음. 반면, Non-Optioanl(일반 타입) 타입 변수는 무조건 값을 가짐. 2. Optional 값 사용하기: Unwrapping 🫢Optional 값을 사용하려면 Unwrapping이 필요함. (1) 강제 Unwrapping: ..
산술 연산자: 기본적인 수학 연산을 수행함연산자설명예시(let a = 5, b = 3)결과+더하기a + b8-빼기a - b2*곱하기a * b15/나누기a / b1%나머지a % b2주의할 점 : a / b 는 정수끼리 나누면 정수 결과만 반환함 할당 연산자연산자설명예시=값을 변수에 할당let a = 10+=더하고 할당a += 5-=빼고 할당a -= 5*=곱하고 할당a *= 5/=나누고 할당a /= 5%=나머지 계산 후 할당a %= 5 비교 연산자연산자설명예시 ( a = 5, b = 3)결과==같음a == b false!=같지 않음a != btrue작음a flase>큼a > btrue작거나 같음a false>=크거나 같음a >= btrue 논리 연산자연산자설명예시 (true, false)결과&&논리 ANDt..
import UIKit// Have a nice day // 이것은 Swift에서는 문자열로 판단하지 않음."Have a nice day" // 큰따옴표로 해야 문자열로 판단함."123" // 이것도 문자는 숫자로 이루어져 있지만 큰따옴표로 되어있으므로 문자열로 판단함.// let onChar = "1" // 이렇게 작성하면 문자로 판단.let onChar: Character = "1"// let doubleChar: Character = "12" // 이것은 두개의 문자가 들어가서 문자로 저장할 수 없는 것임.// 즉, 문자 : 1개의 문자, 문자열 : 2개 이상의 문자의 집합체let emptyChar : Character = " " // 빈공간으로 하고싶으면 하나의 스페이스를 둬야함.// let st..
import UIKit123 // Integer Types1.23 // Floating-point Typesvar number = 0// Int8, 16, 32, 64가 있음Int8.min // Int8타입이 저장할 수 있는 최소값Int8.max // Int8타입이 저장할 수 있는 최대값// Int 자체는 - ~ + 까지저장함. UInt는 +만 저장함// 실수를 저장하는 자료형은 Float, Double가 있지만 일반적으론 Double를 사용함// 참거짓을 부르는 명칭은 "Boolean" 일반적으로 Bool타입이라고 함let ishappy = truelet gloomy = false// 타입 확인하는법// 정수 : Int, 실수 : Double, 문자열 : String, 참거짓(불린) : Boollet ..
import UIKit// 변수var name = "Swift" // 변수선언 우측열을 좌측열에 저장한다var thisYear = 2024 // Year에서 Y를 대문자로 쓴 이유 아래에 정리var valid = true // or false// 이름 정의 규칙// Naming Convention// 코드의 가독성이 높아짐 => 코드의 안정성이 높아짐print(name) // 프로젝트에서 값을 도출하려면 print를 작성해야함print(thisYear)print(valid)name = "Steve" // 우측열을 좌측열에 새로 저장한 것임 => Swift + Steve가 아닌 Swift가 Steve가 되는 것name = "Doseo" // 가장 마지막에 저장된 값이 저장됨thisYear = 2025val..
객체지향 프로그래밍 (OOP)OOP는 데이터와 기능을 객체라는 단위로 묶어 처리하는 방식임.Swift에서 OOP는 주로 클래스, 구조체, 프로토콜을 통해 구현됨. OOP의 주요 특징은 다음과 같음.캡슐화 : 객체 내부의 데이터를 외부에서 접근하지 못하게 보호하는 개념임. Swift에서는 private, fileprivate, internal 같은 접근 제어자를 통해 캡슐화를 지원함상속 : 기존 클래스나 구조체를 기반으로 새로운 클래스나 구조체를 생성할 수 있음. Swift에서 클래스는 상속이 가능하지만, 구조체는 상속이 불가능함. 대신 Swift는 프로토콜을 통해 상속처럼 동작하는 기능을 구현할 수 있음.다형성 : 상속받은 자식 클래스나 객체가 부모 클래스의 속성이나 메서드를 재정의할 수 있음. Swif..
구조체 (Struct): 구조체란 인스턴스의 값(프로퍼티)을 저장하거나 기능(메서드)을 제공하고 이를 캡슐화할 수 있는 Swift가 제공하는 타입(named type)임. 클래스처럼 인스턴스를 만들어서 실제 작업에도 쓸 수 있음.코드를 보면 클래스와 구조체의 코드가 거의 비슷함. class를 struct로 바꾼 것 말고는 차이가 없는듯함.이처럼 클래스와 구조체는 선언하고 사용하는 방법까지 매우 비슷함. 구조체 안의 변수도 속성이라 부르고 함수도 메서드라고 부름.구조체 안의 변수 : 속성(Property)구조체 안의 함수 : 메서드(method) 이제 클래스와 조금 다른 점을 보자면, 클래스에서는 초기화 작업이 있었음. 초기화 작업을 하면 인스턴스에 매개변수를 변경해줄 수 있었음.(클래스 내부에 init(..
Swift는 객체 지향 언어이기 떄문에 클래스의 사용이 필수적임. 또한 클래스의 사용으로 코드는 더 유연해지고 보기쉽게 됨.클래스(Class): Swift에서는 클래스를 정의하여 객체를 만들고 사용할 수 있음. 클래스를 하나 만든다면 클래스에서 생성된 객체인 인스턴스를 만들어 실제 작업에 쓰일 수 있게함. 클래스에 대한 예시코드를 보겠음.클래스를 선언하기 위해서는 아래 처럼 작성하면 됨.class '클래스이름' { /* 코드 부분 */}위 처럼 클래스를 선언하고 안에 name 변수와 my_name() 이라는 함수를 선언했음.Swift에서는 클래스 안에 변수를 속성이라고하고 함수는 메서드라고 함. 클래스 안의 변수 : 속성 (property)클래스 안의 함수 : 메서드 (method) 이렇게 클래스를 선..