Deep_Dev
article thumbnail
[Swift 기초] λͺ¨λ‚˜λ“œ

λͺ¨λ‚˜λ“œ λͺ¨λ‚˜λ“œλŠ” νŠΉμ • κΈ°λŠ₯이 μ•„λ‹Œ λ””μžμΈ νŒ¨ν„΄ ν˜Ήμ€ 자료ꡬ쑰라고 ν•  수 μžˆλ‹€. νƒ€μž…μ„ 인자둜 λ°›λŠ” νƒ€μž… ( νŠΉμ • νƒ€μž…μ˜ 값을 포μž₯ ) νŠΉμ • νƒ€μž…μ˜ 값을 포μž₯ν•œ 것을 λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜(λ©”μ„œλ“œ)κ°€ 쑴재 포μž₯된 값을 λ³€ν™˜ν•˜μ—¬ 같은 ν˜•νƒœλ‘œ 포μž₯ν•˜λŠ” ν•¨μˆ˜(λ©”μ„œλ“œ)κ°€ 쑴재 μ»¨ν…μŠ€νŠΈ μ»¨ν…μŠ€νŠΈcontextλŠ” 컨텐츠λ₯Ό 담은 μƒμž 같은 것 ν•¨μˆ˜μ˜ μ „λ‹¬μΈμžλ‘œ μ»¨ν…μŠ€νŠΈκ°€ λ‹€λ₯Έ 값을 μ „λ‹¬ν•˜λ©΄ 였λ₯˜κ°€ λ°œμƒν•œλ‹€. func addThree(_ num: Int) -> Int { return num + 3 } //λ§€κ°œλ³€μˆ˜λ‘œ 일반 Int νƒ€μž…μ˜ 값을 λ°›κΈ° λ•Œλ¬Έμ— μ •μƒμ μœΌλ‘œ μ‹€ν–‰ addThree(2) //μ „λ‹¬μΈμžκ°€ μˆœμˆ˜ν•œ 값이 μ•„λ‹Œ μ˜΅μ…”λ„μ΄λΌλŠ” μ»¨ν…μŠ€νŠΈλ‘œ λ‘˜λŸ¬μ‹Έμ—¬ μ „λ‹¬λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 였λ₯˜ λ°œμƒ addThree(..

article thumbnail
[Swift 기초] 맡, ν•„ν„°, λ¦¬λ“€μŠ€

맡, ν•„ν„°, λ¦¬λ“€μŠ€ μŠ€μœ„ν”„νŠΈλŠ” ν•¨μˆ˜λ₯Ό 일급 객체둜 μ·¨κΈ‰ν•œλ‹€. λ”°λΌμ„œ ν•¨μˆ˜λ₯Ό λ‹€λ₯Έ ν•¨μˆ˜μ˜ μ „λ‹¬μΈμžλ‘œ μ‚¬μš©ν•  수 μžˆλ‹€. λ§€κ°œλ³€μˆ˜λ‘œ ν•¨μˆ˜λ₯Ό κ°–λŠ” ν•¨μˆ˜λ₯Ό κ³ μ°¨ν•¨μˆ˜λΌκ³  λΆ€λ₯΄λŠ”데, λŒ€ν‘œμ μΈ κ³ μ°¨ν•¨μˆ˜λ‘œ 맡, ν•„ν„°, λ¦¬λ“€μŠ€κ°€ μžˆλ‹€. 맡 μžμ‹ μ„ ν˜ΈμΆœν•  λ•Œ λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬λœ ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜μ—¬ κ·Έ κ²°κ³Όλ₯Ό λ‹€μ‹œ λ°˜ν™˜ν•΄μ£ΌλŠ” ν•¨μˆ˜ μŠ€μœ„ν”„νŠΈμ—μ„œ 맡은 λ°°μ—΄, λ”•μ…”λ„ˆλ¦¬, μ„ΈνŠΈ, μ˜΅μ…”λ„ λ“±μ—μ„œ μ‚¬μš©ν•  수 μžˆλ‹€. κΈ°μ‘΄ 데이터λ₯Ό λ³€ν˜•ν•˜λŠ”λ° 많이 μ‚¬μš©ν•œλ‹€. for-in ꡬ문과 맡 λ©”μ„œλ“œμ˜ μ‚¬μš© 비ꡐ let numbers: [Int] = [0,1,2,3,4] var doubledNumbers: [Int] = [Int]() var strings: [String] = [String]() // for ꡬ문 μ‚¬μš© for number in numbers..

article thumbnail
[Swift] Dispatch Queue
🍎 iOS/Swift 2023. 1. 27. 01:08

πŸ“– Dispatch Queue Queue : FIFO ꡬ쑰 Serial Queue 이전 μž‘μ—…μ΄ λλ‚˜λ©΄ λ‹€μŒ μž‘μ—…μ„ 순차적으둜 μ‹€ν–‰ν•˜λŠ” 직렬 ν˜•νƒœ Concurrent Queue 이전 μž‘μ—…μ΄ 끝날 λ•ŒκΉŒμ§€ κΈ°λ‹€λ¦¬λŠ” 것이 μ•„λ‹Œ, λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” 병렬 ν˜•νƒœ πŸ“– GCD GCD : Multi Processλ₯Ό μœ„ν•œ Thread Programming의 방법 기쑴에 Thread Programming을 ν•˜κΈ° μœ„ν•΄μ„œλŠ” 동기화도 관리λ₯Ό ν•΄μ€˜μ•Όν•˜κ³ , deadlock도 관리λ₯Ό ν•˜λŠ” λ“± μŠ€λ ˆλ“œν’€μ„ 직접 κ΄€λ¦¬ν•΄μ•Όν•˜λŠ” λ²ˆκ±°λ‘œμ›€μ΄ μžˆμ§€λ§Œ, μ• ν”Œμ—μ„œ λ”°λ‘œ GCDλ₯Ό ν†΅ν•΄μ„œ μ“°λ ˆλ“œλ₯Ό OSμ—μ„œ κ΄€λ¦¬ν•˜κ³  λΆ„λ°°ν•˜κ²Œ λœλ‹€. λ”°λΌμ„œ Swiftμ—μ„œλŠ” Thread κ΄€λ ¨ μž‘μ—…μ€ Grand Central Dispatch API ( GCD )λ₯Ό 톡해 μ²˜λ¦¬ν•œλ‹€...

article thumbnail
[Swift 기초] μ˜΅μ…”λ„ 체이닝과 λΉ λ₯Έ μ’…λ£Œ

μ˜΅μ…”λ„ 체이닝 μ˜΅μ…”λ„μ— 속해 μžˆλŠ” nil 일지도 λͺ¨λ₯΄λŠ” ν”„λ‘œνΌν‹°, λ©”μ„œλ“œ, μ„œλΈŒμŠ€ν¬λ¦½μ…˜ 등을 κ°€μ Έμ˜€κ±°λ‚˜ ν˜ΈμΆœν•  λ•Œ μ‚¬μš©ν•  수 μžˆλŠ” 일련의 κ³Όμ •. 즉, μ˜΅μ…”λ„μ„ λ°˜λ³΅μ‚¬μš©ν•˜μ—¬ μ˜΅μ…”λ„μ΄ μžμ „κ±° 체인처럼 μ„œλ‘œ 꼬리λ₯Ό λ¬Όκ³  μžˆλŠ” λͺ¨μ–‘이기 λ•Œλ¬Έμ— μ˜΅μ…”λ„ 체이닝이라고 λΆ€λ₯Έλ‹€. μžμ „κ±° μ²΄μΈμ—μ„œ ν•œ 칸이라도 μ—†κ±°λ‚˜ κ³ μž₯ λ‚˜λ©΄ 체인 전체가 λ™μž‘ν•˜μ§€ μ•Šλ“―μ΄ μ€‘μ²©λœ μ˜΅μ…”λ„ 쀑 ν•˜λ‚˜λΌλ„ 값이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ 결과적으둜 nil λ°˜ν™˜ μ˜΅μ…”λ„ 체이닝은 ν”„λ‘œνΌν‹°λ‚˜ λ©”μ„œλ“œ λ˜λŠ” μ„œλΈŒμŠ€ν¬λ¦½νŠΈλ₯Ό ν˜ΈμΆœν•˜κ³  싢은 μ˜΅μ…”λ„ λ³€μˆ˜λ‚˜ μƒμˆ˜ 뒀에 λ¬ΌμŒν‘œ(?)λ₯Ό λΆ™μ—¬ ν‘œν˜„ν•œλ‹€. μ˜΅μ…”λ„μ΄ nil이 μ•„λ‹ˆλΌλ©΄ μ •μƒμ μœΌλ‘œ 호좜될 것이고, nil이라면 κ²°κ΄κ°’μœΌλ‘œ nil을 λ°˜ν™˜ν•  것이닀. ! ( λŠλ‚Œν‘œ ) λ¬ΌμŒν‘œ λŒ€μ‹ μ— λŠλ‚Œν‘œλ₯Ό μ‚¬μš©ν•  μˆ˜λ„μžˆλŠ”λ°, μ΄λŠ” μ˜΅μ…”λ„μ—..

article thumbnail
[Swift 기초] ν΄λ‘œμ €

ν΄λ‘œμ € ν΄λ‘œμ €λŠ” μ‚¬μš©μžμ˜ μ½”λ“œ μ•ˆμ—μ„œ μ „λ‹¬λ˜μ–΄ μ‚¬μš©ν•  수 μžˆλŠ” λ‘œμ§μ„ 가징 μ€‘κ΄„ν˜Έ{} κ΅¬λΆ„λœ μ½”λ“œμ˜ λΈ”λŸ­μ΄λ‹€. μ‰½κ²Œ λ§ν•˜λ©΄ '이름이 μ—†λŠ” ν•¨μˆ˜'이닀. λ”°λΌμ„œ ν•¨μˆ˜λŠ” 이름이 μžˆλŠ” ν΄λ‘œμ €λΌκ³  ν•  수 μžˆλ‹€. ν΄λ‘œμ €λŠ” λ³€μˆ˜λ‚˜ μƒμˆ˜κ°€ μ„ μ–Έλœ μœ„μΉ˜μ—μ„œ μ°Έμ‘°λ₯Ό νšλ“ν•˜κ³  μ €μž₯ν•  수 μžˆλ‹€. πŸ’‘ ν΄λ‘œμ €μ˜ 3가지 ν˜•νƒœ 이름이 μžˆμœΌλ©΄μ„œ μ–΄λ–€ 값도 νšλ“ν•˜μ§€ μ•Šμ€ μ „μ—­ν•¨μˆ˜μ˜ ν˜•νƒœ 이름이 μžˆμœΌλ©΄μ„œ λ‹€λ₯Έ ν•¨μˆ˜ λ‚΄λΆ€μ˜ 값을 νšλ“ν•  수 μžˆλŠ” μ€‘μ²©λœ ν•¨μˆ˜μ˜ ν˜•νƒœ 이름이 μ—†κ³  μ£Όλ³€ λ¬Έλ§₯에 따라 값을 νšλ“ν•  수 μžˆλŠ” μΆ•μ•½ λ¬Έλ²•μœΌλ‘œ μž‘μ„±ν•œ ν˜•νƒœ πŸ’‘ ν΄λ‘œμ €μ˜ λ‹€μ–‘ν•œ ν‘œν˜„ ν΄λ‘œμ €λŠ” λ§€κ°œλ³€μˆ˜μ™€ λ°˜ν™˜ κ°’μ˜ νƒ€μž…μ„ λ¬Έλ§₯을 톡해 μœ μΆ”ν•  수 있기 λ•Œλ¬Έμ— λ§€κ°œλ³€μˆ˜μ™€ λ°˜ν™˜ κ°’μ˜ νƒ€μž…μ„ μƒλž΅ν•  수 μžˆλ‹€. ν΄λ‘œμ €μ— 단 ν•œμ€„μ˜ ν‘œν˜„λ§Œ λ“€μ–΄μžˆλ‹€λ©΄ μ•”μ‹œμ μœΌλ‘œ 이λ₯Ό 반..

article thumbnail
[Swift 기초] μ ‘κ·Όμ œμ–΄

μ ‘κ·Όμ œμ–΄ μ ‘κ·Όμ œμ–΄ = 은닉화 μ ‘κ·Όμ œμ–΄λ₯Ό 톡해 상세 κ΅¬ν˜„μ€ 숨기고 ν—ˆμš©λœ κΈ°λŠ₯만 μ‚¬μš©ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•œλ‹€. μ ‘κ·Όμ œμ–΄μ˜ ν•„μš”μ„± μ™ΈλΆ€μ—μ„œ λ³΄κ±°λ‚˜ μ ‘κ·Όν•˜λ©΄ μ•ˆλ˜λŠ” μ½”λ“œκ°€ 있기 λ•Œλ¬Έμ΄λ‹€. μ ‘κ·Όμˆ˜μ€€ public : 곡개 μ ‘κ·Όμˆ˜μ€€ μ–΄λ””μ„œλ“  쓰일 수 μžˆλ‹€. μŠ€μœ„ν”„νŠΈμ˜ κΈ°λ³Έ μš”μ†ŒλŠ” λͺ¨λ‘ 곡개 μ ‘κ·Όμˆ˜μ€€μœΌλ‘œ λ˜μ–΄μžˆλ‹€. open : 개방 μ ‘κ·Όμˆ˜μ€€ 곡개 μ ‘κ·Όμˆ˜μ€€ μ΄μƒμœΌλ‘œ 높은 μ ‘κ·Ό μˆ˜μ€€μ΄λ‹€. ν΄λž˜μŠ€μ™€ 클래슀의 λ©€λ²„μ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆλ‹€. 곡개 μ ‘κ·Όμˆ˜μ€€κ³Ό 개방 μ ‘κ·Όμˆ˜μ€€μ˜ 차이점 개방 μ ‘κ·Όμˆ˜μ€€μ„ μ œμ™Έν•œ λ‹€λ₯Έ λͺ¨λ“  μ ‘κ·Ό μˆ˜μ€€μ˜ ν΄λž˜μŠ€λŠ” κ·Έ ν΄λž˜μŠ€κ°€ μ •μ˜λœ λͺ¨λ“ˆ μ•ˆμ—μ„œλ§Œ 상속할 수 μžˆλ‹€. 개방 μ ‘κ·Όμˆ˜μ€€μ„ μ œμ™Έν•œ λ‹€λ₯Έ λͺ¨λ“  μ ‘κ·Όμˆ˜μ€€μ˜ 클래슀 λ©€λ²„λŠ” ν•΄λ‹Ή 멀버가 μ •μ˜λœ λͺ¨λ“ˆ μ•ˆμ—μ„œλ§Œ μž¬μ •μ˜ ν•  수 μžˆλ‹€. 개방 μ ‘κ·Όμˆ˜μ€€μ˜ ν΄λž˜μŠ€λŠ” κ·Έ..

article thumbnail
[Swift 기초] μΈμŠ€ν„΄μŠ€ 생성 및 μ†Œλ©Έ

μΈμŠ€ν„΄μŠ€ 생성 및 μ†Œλ©Έ μΈμŠ€ν„°λ₯Ό μƒμ„±ν•˜λŠ” 방법과 클래슀의 μΈμŠ€ν„΄μŠ€κ°€ μ†Œλ©Έν•  λ•Œ μ§„ν–‰λ˜λŠ” ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•΄μ„œ.. μΈμŠ€ν„΄μŠ€ 생성 μ΄ˆκΈ°ν™” κ³Όμ • = μƒˆλ‘œμš΄ μΈμŠ€ν„΄μŠ€λ₯Ό μ‚¬μš©ν•  μ€€λΉ„λ₯Ό ν•˜κΈ° μœ„ν•˜μ—¬ μ €μž₯ ν”„λ‘œνΌν‹°μ˜ μ΄ˆκΉƒκ°’μ„ μ„€μ •ν•˜λŠ” 일 μ΄λ‹ˆμ…œλΌμ΄μ €λ₯Ό μ •μ˜ν•˜λ©΄ μ΄ˆκΈ°ν™” κ³Όμ • 직접 κ΅¬ν˜„ κ°€λŠ₯ ( μ΄λ‹ˆμ…œλΌμ΄μ €μ˜ 역할은 κ·Έμ € μΈμŠ€ν„΄μŠ€μ˜ 첫 μ‚¬μš©μ„ μœ„ν•΄ μ΄ˆκΈ°ν™”ν•˜λŠ” 것뿐 ) init ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ΄λ‹ˆμ…œλΌμ΄μ € λ§€μ„œλ“œμž„μ„ ν‘œν˜„ 클래슀, ꡬ쑰체, μ—΄κ±°ν˜•μ˜ 기본적인 ν˜•νƒœμ˜ μ΄λ‹ˆμ…œλΌμ΄μ € Class SomeCLass{ init(){ // μ΄ˆκΈ°ν™”ν•  λ•Œ ν•„μš”ν•œ μ½”λ“œ } } struct SomeStruct{ init(){ // μ΄ˆκΈ°ν™”ν•  λ•Œ ν•„μš”ν•œ μ½”λ“œ } } enum SomeEnum{ case someCase init(){ // μ—΄κ±°ν˜•μ€ 초..

article thumbnail
[Swift 기초] ν”„λ‘œνΌν‹°μ™€ λ©”μ„œλ“œ

πŸ“–ν”„λ‘œνΌν‹°μ™€ λ©”μ„œλ“œ ν”„λ‘œνΌν‹° : 클래슀, ꡬ쑰체 λ˜λŠ” μ—΄κ±°ν˜• 등에 κ΄€λ ¨λœ κ°’ λ©”μ„œλ“œ : νŠΉμ • νƒ€μž…μ— κ΄€λ ¨λœ 힘수 πŸ“– ν”„λ‘œνΌν‹° μ €μž₯ ν”„λ‘œνΌν‹° : μΈμŠ€ν„΄μŠ€μ˜ λ³€μˆ˜ λ˜λŠ” μƒμˆ˜ μ—°μ‚° ν”„λ‘œνΌν‹° : 값을 μ €μž₯ν•œ 것이 μ•„λ‹ˆλΌ νŠΉμ • 연산을 μ‹€ν–‰ν•œ κ²°κ³Όκ°’ ( 클래슀, ꡬ쑰체, μ—΄κ±°ν˜•μ— μ‚¬μš© ) νƒ€μž… ν”„λ‘œνŒŒν‹° : νŠΉμ • νƒ€μž…μ— μ‚¬μš©λ˜λŠ” ν”„λ‘œνΌν‹° ( 클래슀 λ³€μˆ˜ ) ν”„λ‘œνΌν‹° κ°μ‹œμž = ν”„λ‘œνΌν‹°μ˜ 값이 λ³€ν•˜λŠ” 것을 κ°μ‹œ ( 값이 λ³€ν•  λ•Œ κ°’μ˜ 변화에 λ”°λ₯Έ νŠΉμ • μž‘μ—… μ‹€ν–‰ ) πŸ“Œ μ €μž₯ ν”„λ‘œνΌν‹° 클래슀 λ˜λŠ” ꡬ쑰체의 μΈμŠ€ν„΄μŠ€μ™€ μ—°κ΄€λœ 값을 μ €μž₯ν•˜λŠ” κ°€μž₯ λ‹¨μˆœν•œ κ°œλ…μ˜ ν”„λ‘œνΌν‹° var λ₯Ό μ‚¬μš©ν•˜λ©΄ λ³€μˆ˜ μ €μž₯ ν”„λ‘œνΌν‹° let 을 μ‚¬μš©ν•˜λ©΄ μƒμˆ˜ μ €μž₯ ν”„λ‘œνΌν‹° 🍎 ꡬ쑰체와 클래슀의 μ €μž₯ ν”„λ‘œνΌν‹° ꡬ쑰체의 μ €μž₯ ν”„λ‘œνΌν‹°κ°€ μ˜΅μ…”λ„μ΄ μ•„λ‹ˆλ”λΌ..