λ°μν
* 2023λ Apple Developer Academy @ POSTECH μμ swift μ€ν°λλ₯Ό νλ©° 곡λΆν λ΄μ©μ λλ€
4. νμμ±
- λ°μ΄ν° 보쑴/κ΄λ¦¬
- λ°μ΄ν° μ μ₯
- λ³μλ λ°μ΄ν°λ₯Ό μ μ₯
- μ΄λ₯Ό ν΅ν΄ κ°μ κΈ°μ΅νκ³ νμν λ λ€μ μ¬μ©
- λ°μ΄ν° μ‘°μ
- λ³μλ μ μ₯λ λ°μ΄ν°λ₯Ό μ‘°μ.
- ex-κ°μ μ¦κ°μν€κ±°λ κ°μμν€κ±°λ, λ κ°μ λνκ±°λ λΉΌλ λ±μ μμ μ μν
- λ°μ΄ν° μ λ¬
- λ³μλ νλ‘κ·Έλ¨ λ΄μμ λ°μ΄ν°λ₯Ό μ λ¬
- ex-ν ν¨μμμ λ€λ₯Έ ν¨μλ‘ λ°μ΄ν°λ₯Ό μ λ¬νκ±°λ λ·° 컨νΈλ‘€λ¬μμ λ·°λ‘ λ°μ΄ν°λ₯Ό μ λ¬
- λ°μ΄ν°λ₯Ό 보쑴νκ³ νμμμ μ°Έμ‘°νκ³ κ΄λ¦¬νκΈ° μνκ²μ΄ λ³μλ₯Ό μ¬μ©νλ κ°μ₯ ν° λͺ©μ
- μ£Όμλ‘ λͺ¨λ κ²μ κ΄λ¦¬νκΈ° μ΄λ ΅κΈ° λλ¬Έμ μ£Όμλ μ΄μ체μ κ° κ΄λ¦¬νκ³ μ°λ¦¬λ λ³μ μ΄λ¦λ§ κ°μ§κ³ κ΄λ¦¬νλ©΄ λ³μμ μ΄λ¦μ΄ λΆμ¬μ§ 곡κ°μ μ΄μ체μ κ° μμμ μ°Ύμκ°μ κ°μ λ£κ±°λ μμ ν μ μμ
- λ°μ΄ν° μ μ₯
- ν¨μ¨μ±
- μ½λμ μ¬μ¬μ©
- λ³μλ κ°μ μ μ₯νκ³ λ€μ μ¬μ©ν μ μμΌλ―λ‘ μ½λμ μ¬μ¬μ©μ±μ λμ¬μ€
- ex-μ¬μ©μμ μ΄λ¦μ μ¬λ¬ κ³³μμ μ¬μ©
- νλ‘κ·Έλ¨μ μν κ΄λ¦¬
- λ³μλ νλ‘κ·Έλ¨μ μνλ₯Ό κ΄λ¦¬νλ λ° μ¬μ©
- ex-κ²μμμ νμ¬ μ μλ₯Ό μ μ₯νκ±°λ μ ν리μΌμ΄μ μμ μ¬μ©μκ° λ§μ§λ§μΌλ‘ λ°©λ¬Έν νμ΄μ§λ₯Ό μ μ₯
- λ³μλ₯Ό μ¬μ©νλ©΄ μ½λμ μ¬νμ©μ±κ³Ό κ°λ μ±μ λμ¬μ£Όκ³ , μ€λ³΅μ μ κ±°νμ¬ μ μ§λ³΄μλ₯Ό μ½κ² ν΄μ€λ€λ μ₯μ μ΄ μμ
- μ½λμ μ¬μ¬μ©
5. λͺ λͺ κ·μΉ
μ΄λ¦ | μ€λͺ | μμ |
λν νκΈ°λ²(Camel Case) = μλ¬Έμ μΉ΄λ© νκΈ°λ² |
- κ° λ¨μ΄μ 첫 λ¬Έμλ₯Ό λλ¬Έμλ‘ νκΈ°νλ μ΄λ¦μ 첫 λ¬Έμλ μλ¬Έμλ‘ μμ± - λ³μλͺ , ν¨μλͺ |
camelCase userName |
νμ€μΉΌ νκΈ°λ²(Pascal Case) = λλ¬Έμ μΉ΄λ© νκΈ°λ² |
- κ° λ¨μ΄μ 첫 λ¬Έμλ₯Ό λλ¬Έμλ‘ νκΈ°νλ©° μ΄λ¦μ 첫 λ¬Έμ λν λλ¬Έμλ‘ μμ± - ν΄λμ€λͺ |
PascalCase UserName |
λ± νκΈ°λ²(Snake Case) | - κ° λ¨μ΄ μ¬μ΄λ₯Ό μΈλλ°λ‘ κ΅¬λΆ - λ°μ΄ν°λ² μ΄μ€ ν μ΄λΈλͺ , 컬λΌλͺ |
snake_case user_name |
μΌλ°₯ νκΈ°λ²(Kebab Case) | - κ° λ¨μ΄ μ¬μ΄λ₯Ό νμ΄νμΌλ‘ κ΅¬λΆ - HTML νκ·Έ id, class μμ± |
kebab-case |
νκ°λ¦¬μ νκΈ°λ² (Hungarian Notation) |
- μ΄λ¦ μμ λ³μμ νμ
μ μ λμ΄λ‘ λ£μ΄μ£Όλ νκΈ°λ² - ch(char), str(string), i(int), db(double), b(boolean) |
strUserName iUserAge |
- μ΄λ¦μ λν νκΈ°λ²μΌλ‘ μμ±ν΄μΌ ν¨
- μ΄λ¦μ μ€λͺ
μ μ΄κ³ μλ―Έκ° μμ΄μΌ ν¨
- μ΄λ¦μ λΆλͺ νκ³ μ ννκ² λ³μ, ν¨μ, νΉμ λ€λ₯Έ κ°μ²΄κ° 무μμ λνλ΄λμ§/νλμ§λ₯Ό λ¬μ¬ν μ μμ΄μΌ ν¨
- μ½μ΄(abbreviation)λ λλ¬Έμμ΄(acronym)λ νΌν΄μΌ ν¨
- μ 체 λ¨μ΄λ₯Ό μ¬μ©νλ κ²μ΄ μ’μ
- λ€λ₯Έ κ°λ°μλ€μ΄ μ½κ³ μ΄ν΄νκΈ° μ½λλ‘
- λ³μμ μμμλ λͺ
μ¬λ₯Ό, ν¨μλ λ©μλμλ λμ¬λ₯Ό μ¬μ©
- μ½λλ² μ΄μ€ μ 체μμ κ° κ°μ²΄μ λͺ©μ μ λΆλͺ νκ³ μΌκ΄μ± μκ² μ§μ ν μ μμ
- μ΄λμ
κ³Ό λλ¬Έμμ΄λ₯Ό ꡬλ³νκΈ° μν΄μλ λλ¬Έμ μ¬μ©
- HTTP, URL, HTML
- λΆμΈκ°μλ μλ¬Έμ μ¬μ©
- isDone, hasError, isEnabled
- λ³μμ μμ μ΄λ¦μλ λν νκΈ°λ² μ¬μ©, νμ
λͺ
μλ νμ€μΉΌ νκΈ°λ² μ¬μ©
- νμ κ³Ό νμ μ μΈμ€ν΄μ€λ₯Ό ꡬλΆνκΈ° μν΄
- μμΈ
- λ¨ λ€μκ³Ό κ°μ μμΈ κ²½μ°μλ μ¬μ© λΆκ°
- 미리 μ ν μμ½μ΄ λλ ν€μλ
- ν΄λΉ μ½λ λ²μ λ΄μμ 미리 μ¬μ©λλ κΈ°μ‘΄ μ΄λ¦κ³Ό λμΌν μ΄λ¦
- μ°μ°μλ‘ μ¬μ©λ μ μλ κΈ°νΈ(+,-,*,/)
- μ«μλ‘ μμνλ μ΄λ¦
- κ³΅λ°±μ΄ ν¬ν¨λ μ΄λ¦
- ν¨μ, λ©μλ, μΈμ€ν΄μ€ μ΄λ¦μ 첫κΈμλ₯Ό μλ¬Έμλ‘ μ¬μ©νλ
// Variables and Constants
let numberOfItems: Int
var firstName: String
// Functions and Methods
func calculateTotal() -> Double
func showErrorMessage(message: String)
// Types
struct Person {
var firstName: String
var lastName: String
}
enum Result {
case success
case failure
}
6. μ μΈ
- Swiftμμ λ³μλ₯Ό μ μΈνλ €λ©΄ λ°μ΄ν° νμ μ λͺ μνκ³ λ³μ μ΄λ¦μ μ§μ
var num: Int // μ μν λ³μ numμ μ μΈ
var pi: Float // μ€μν λ³μ piλ₯Ό μ μΈ
var ch: Character // λ¬Έμν λ³μ chλ₯Ό μ μΈ
- Swiftλ λ³μ μ μΈ μ λ³μμ λ°μ΄ν° νμ
μ μ§μ νμ§ μμλ λ¨
- μ΄ κ²½μ° μ»΄νμΌλ¬κ° λ³μμ λ°μ΄ν° νμ μ μλμΌλ‘ μΆλ‘
- νμ μΆλ‘ (Type Inference)
var num = 10 // numμ΄λΌλ λ³μμ μ μν λ°μ΄ν° 10μ ν λΉνκ³ , νμ
μΆλ‘ μ ν΅ν΄ Int νμ
μΌλ‘ μ§μ λ©λλ€.
var pi = 3.14 // piλΌλ λ³μμ μ€μν λ°μ΄ν° 3.14λ₯Ό ν λΉνκ³ , νμ
μΆλ‘ μ ν΅ν΄ Float νμ
μΌλ‘ μ§μ λ©λλ€.
var ch = "a" // chλΌλ λ³μμ λ¬Έμν λ°μ΄ν° 'a'λ₯Ό ν λΉνκ³ , νμ
μΆλ‘ μ ν΅ν΄ Character νμ
μΌλ‘ μ§μ λ©λλ€.
- λ³μλ₯Ό μ μΈν ν, λ³μμ κ°μ ν λΉνκ±°λ λ³μλ₯Ό μ°Έμ‘°νμ¬ μ¬μ©ν μ μμ
- λ³μμ κ°μ μΈμ λ μ§ λ³κ²½ν μ μμ΅λλ€
num = 20 // num λ³μμ 20μ ν λΉν©λλ€.
pi = 3.14159 // pi λ³μμ 3.14159λ₯Ό ν λΉν©λλ€.
ch = "b" // ch λ³μμ 'b'λ₯Ό ν λΉν©λλ€.
7. λ³μμ νμ κ³Ό λ©λͺ¨λ¦¬
λ³μμ νμ
μ μ
Int | μΌλ°μ μΈ μ μ. 32bit λλ 64bitμ κ°μ΄ λ¨ (μ€ννλ CPUμ λ°λΌ λ¬λΌμ§) |
UInt | Intμ λμΌνμ§λ§ +,- λΆνΈκ° μμ → μμκ° μλ μ μ |
Byte | 8bit νμ κ° |
Int8, Int16, Int32, Int64 | - κ°μ ν¬κΈ°λ₯Ό μ§μ νκ³ λ³μλ₯Ό μ¬μ©νλ κ²κ³Ό κ°μ κ²½μ°, μ΄κ²λ€μ μ΄μ©νλ κ²μ΄ μκΈ° μ¬μ - κ° λ³μμ bitμλ₯Ό λνλ - λΆνΈ μλ μ μ “UInt8~” λ±λ κ°μΆμ΄μ§ |
- κ° λΉνΈλ³λ‘ νν κ°λ₯ν μ μ μλ¦Ώμ ν¬κΈ°κ° λ€λ₯΄λ©°, .min .maxλ₯Ό ν΅ν΄ νν κ°λ₯ν μ μ λ²μ νμΈ κ°λ₯
μ€μ
Float | 32bit νμ λΆλ μμμ κ°. μμμ 6μ리κΉμ§. |
Double | 64bit νμ λΆλ μμ. μμμ 15μ리κΉμ§. |
Float32, Float64, Float80, Float96 | - κ°μ ν¬κΈ°λ₯Ό μ§μ νμ¬ λΆλ μμμ μ μ·¨κΈνκ³ μΆμ κ²½μ°μ μ¬μ©ν¨ - Doubleμμλ μ λ°λκ° λΆμ‘±ν κ²½μ° 96bit νκΉμ§ μ¬μ©ν μμ |
ν μ€νΈ
String | - μΌλ°μ μΈ ν
μ€νΈ - ν° λ°μ΄ν (”)λ‘ λλ¬μ νν - +μ°μ°μ, ==λΉκ΅ λ±μ΄ κ°λ₯ν¨ |
Character | - 1κ°μ λ¬Έμ ν
μ€νΈ γ» ν° λ°μ΄ν (”)λ‘ λλ¬μ νν - μ λμ½λ9 λ¬Έμλ₯Ό μ¬μ©νκΈ° λλ¬Έμ νΉμκΈ°νΈλ μ¬μ©ν μ μμ |
λΆμΈ(μ΄μ§)
Bool | - λ
Όλ¦¬ κ° - true λλ false - false/true λμ 0,1μ λ£μ΄μ μ¬μ©ν μ μμ - 1bit(0 or 1) |
μ΅μ λ
Optional | - κ°μ΄ μμ μλ μκ³ , μμ μλ μλ λ³μ - var str : String? = nil - var nums : [Int]? = nil |
Any
Any | - λͺ¨λ νμ
μ μ μ₯ν¨ - μλ£νμ AnyμΌλ‘ λͺ μν΄μ£Όλ©΄, Anyνμ μλ Value νμ (ꡬ쑰체, μ΄κ±°ν), Reference νμ (ν΄λμ€, ν΄λ‘μ ) μκ΄μμ΄ μ μ₯ κ°λ₯ν¨ |
var things: [Any] = []
things.append(1)
things.append(1.0)
things.append("sodeul")
things.append(false)
things.append(Human.init()))
things.append({ print("I am Sodeul!") })
AnyObject
AnyObject | - λͺ¨λ class νμ
μ μ μ₯ - μ μ₯νλ €λ κ°μ²΄μ νμ μ΄ ν΄λμ€μ΄κΈ°λ§ νλ©΄ λ¨ |
var things: [AnyObject] = []
things.append(1) // Argument type 'Int' expected to be an instance of a class
things.append(1.0) // Argument type 'Double' expected to be an instance of a class
things.append("sodeul") // Argument type 'String' expected to be an instance of a class
things.append(false) // Argument type 'Bool' expected to be an instance of a class
things.append(Teacher.init()))
things.append({ print("I am Sodeul!") }) // Argument type '()->()' expected to be an instance of a class
λΉνΈ bit π λ°μ΄νΈ Byte
λΉνΈ bit | λ°μ΄νΈ Byte |
0κ³Ό 1 λκ°μ§λ§ κ°μ§ μ μλ μΈ‘μ λ¨μ | 8κ°μ λΉνΈλ‘ ꡬμ±λ λ°μ΄ν°μ μμ λνλ΄λ λ¨μ |
- 1 byte = 256κ°μ μ 보 λ΄ν¬
- 1 byte = 2(0κ³Ό 1 λ κ°) ^ 8 bits = 256
λ³μμ λ©λͺ¨λ¦¬
- Bool: 1 byte
- Int8: 1 byte
- UInt8: 1 byte
- Int16: 2 bytes
- UInt16: 2 bytes
- Int32: 4 bytes
- UInt32: 4 bytes
- Int64: 8 bytes
- UInt64: 8 bytes
- Float: 4 bytes
- Double: 8 bytes
- Character: 16 bits (2 bytes)
- String: 16 bits (2 bytes)
λ°μν
'β¨οΈ Language > swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] 쑰건/λ°λ³΅λ¬Έ (1) | 2024.03.17 |
---|---|
[Swift] μ½λ μ νμ (0) | 2024.03.16 |
[Swift] λ³μμ νλ‘νΌν°1 (0) | 2024.03.15 |
[μ½λνΈλ¦¬ μ±λ¦°μ§] 6μ£Όμ°¨ - κ·Έλν νμ (0) | 2023.10.16 |
[μ½λνΈλ¦¬ μ±λ¦°μ§] 5μ£Όμ°¨ - HashMap (0) | 2023.10.04 |