Swift


우선 ARC를 공부하기 전에 메모리 구조를 알아야함. 처음 공부하는건데 와. 신난다. 후...1. 메모리 구조먼저 프로그램이 실행이 되면 OS는 메모리(RAM)에 이 프로그램을 위한 공간을 할당함그 공간은 코드, 데이터, 힙, 스택으로 나누어서 사용함1-1 코드 영역우리가 작성한 소스 코드가 기계어 형태로 저장됨 (기계어 : 0과 1)컴파일 타임에 결정되고, 중간에 코드가 변경되지 않도록 Read-Only 형태로 저장됨. 즉,코드 자체가 올라가는 영역앱의 기계어 코드(컴파일 결과물), 상수 문자열 같은 것들이 이곳에 저장됨수정이 불가능한 읽기 전용 메모리1-2 데이터 영역전역변수, static 변수가 저장됨프로그램의 시작과 동시에 할당되고, 프로그램이 종료되어야 메모리가 해제됨실행 중에 변수 값이 변경될..


Swift에서 직접 타입을 만드는 방법: 개발자가 필요한 타입을 직접 만들게 되는데 열거형(Enum), 구조체(Struct), 클래스(Class)로 만들 수 있음 Swift의 프로그래밍 패러다임: Swift는 다양한 프로그래밍 패러다임을 지원하는 언어임객체지향 프로그래밍 `Object-Oriented Programming`(OOP)프로토콜 지향 프로그래밍 `Protocol-Oriented Programming`(POP)함수형 프로그래밍 `Functinal Programming`(FP)애플이 제공하는 프레임 워크는 객체지향으로 구현되어 있음. iOS의 앱개발을 공부할 때는 보통 객체지향부터 시작하는게 일반적임. 그렇다면 객체 지향은 무엇임??객체 지향 프로그래밍(OOP)이란?객체 지향 프로그래밍이란 프로그..

1. `Int?`와 `Int!`의 차이`Int?`(Optional타입)값을 가지고 있거나(`nil`이 아님), `nil`일 수도 있는 타입임.값을 사용하려면 명시적으로 언래핑(옵셔널 바인딩 or 강제언래핑)을 해줘야함let a: Int? = 0print(a) // Optional(0)`Int!`(IUO타입)마치 일반 타입처럼 사용할 수 있는 옵셔널임자동으로 언래핑되지만, `nil`일 경우 런타임 에러가 발생함실수로 크래시를 일으킬 위험이 크기 때문에 되도록 사용을 안하는 것이 좋음let b: Int! = 0print(b) // 0 (자동 언래핑)2. IUO의 자동 언래핑 시점: IUO는 Non-Optional 타입으로 저장하거나 처리할 때 자동으로 언래핑 됨.let a: Int? = 0let b: Int..

함수는 어떤 작업을 수행하는 코드 묶음임. Swift에서 함수는 코드의 재사용성을 높이고, 깔끔하게 관리하기 위해 필수적인 요소임.1. 함수의 기본 구조func 함수이름(매개변수: 매개변수 타입) -> 반환타입 { 실행될 코드}함수 이름은 Low Camel Case로 작성.매개변수(Parameter): 함수 내부에서 사용할 변수.반환 타입(Return Type): 함수가 결과로 반환하는 값의 타입.반환값이 없을 때는 `Void`(또는 생략 가능).예제로 가장 간단한 함수를 만들어 보겠음func sayHello() { print("Hello")}`sayHello`라는 함수를 만들었고 저 함수가 호출됐을 떄 실행되는 코드는 Hello라는 텍스트임. 호출 하는 방법은 아래와 같음sayHello() // ..


열거형(enum)은 관련 있는 값들을 묶어서 더 안전하고 보기 좋게 만들어주는 기능임. `Swift`에서 자주 쓰이는 기능 중 하나라서 정리해봄.1. 열거형이란?: 열거형은 관련 있는 값들을 그룹으로 묶어 하나의 타입으로 관리할 수 있도록 만들어주는 기능임. 아래와 같은 특징이 있음관련 있는 값들을 그룹화함. 각 값은 케이스(case)로 정의되며, 열거형의 타입으로 묶임.열거형을 사용하면 오타나 잘못된 값 입력을 방지할 수 있음. (타입 안정성을 높임)`switch` 문과 결합하여 모든 케이스를 안전하게 처리 가능함.코드 가독성이 올라감2. 기본 열거형 사용법아래는 `Alignment`라는 열거형을 만들어 텍스트 정렬 방향을 정의한 예제임.import UIKit// 텍스트 정렬 방향 열거형enum Ali..

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..