전체 κΈ€

🌱iOS 개발자λ₯Ό κΏˆκΎΈλŠ” 학생이 λ§Œλ“œλŠ” λΈ”λ‘œκ·Έ
Β·πŸ“© Essay
λ“€μ–΄κ°€λ©° κ·Έ λ™μ•ˆ μ™„λ²½ν•œ 글을 써야지 ν•˜λŠ” λ§ˆμŒμ— λ―Έλ€„μ™”λ˜ SOPT에 κ΄€ν•œ 이야기λ₯Ό μ‹œμž‘ν•΄λ³΄κ³ μž ν•œλ‹€. 이번 κΈ€μ—μ„œλŠ” 28기의 지원뢀터 ν•©κ²©κΉŒμ§€μ˜ 이야기λ₯Ό ν•  μ˜ˆμ •μ΄λ‹€. λ‚˜λ„ μ§€μ›ν•˜λŠ” μˆœκ°„μ— μ—¬λŸ¬ λΈ”λ‘œκ·Έμ˜ ν›„κΈ° 글을 μ°Ύμ•„λ΄€μ—ˆκ³ , 또 λ§Žμ€ 도움을 μ–»μ—ˆκΈ° λ•Œλ¬Έμ΄λ‹€. λˆ„κ΅°κ°€κ°€ 이 글을 톡해 도움을 μ–»λŠ”λ‹€λ©΄ λΏŒλ“―ν•  것 κ°™λ‹€. 3번의 도전 끝의 합격 사싀 λ‚˜λŠ” 26κΈ°, 27기에 μ§€μ›ν–ˆμ—ˆμœΌλ‚˜ 떨어지고 3번의 도전 끝에 28기에 ν•©κ²©ν–ˆλ‹€. μ²˜μŒμ—λŠ” 많이 λΆ€λ„λŸ¬μ› κ³  상심이 μ»Έλ‹€. μ§€κΈˆμ—μ„œμ•Ό λ§ν•˜μ§€λ§Œ 동아리가 밉기도 ν–ˆλ‹€. 근데 κ°κ΄€μ μœΌλ‘œ 생각해보면 λΆ„λͺ… λ‚΄κ°€ λΆ€μ‘±ν•œ 면이 μžˆμ—ˆκΈ°μ— 떨어진 것이 νŒ©νŠΈμ˜€λ‹€. μ •ν™•ν•œ μ΄μœ λŠ” μ•Œ 수 μ—†μ§€λ§Œ μ„œλ₯˜μ˜ λ‚΄μš©μ— 진정성이 μ—†μ—ˆκ±°λ‚˜, λ©΄μ ‘μ—μ„œμ˜ 자기 어필이 λΆ€μ‘±ν–ˆκ±°λ‚˜ λ˜λŠ” λ™μ•„λ¦¬μ—μ„œ μ›ν•˜..
·🍎 iOS & Swift
μ•ˆλ…•ν•˜μ„Έμš”, νƒœλΌμž…λ‹ˆλ‹€. 이번 글은 μ •λ¦¬ν˜•νƒœλ‘œ μž‘μ„±ν•΄λ‘μ–΄ μ–΄νˆ¬κ°€ 쑰금 λ”±λ”±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.. μ΄ν•΄λΆ€νƒλ“œλ €μš” πŸ₯² 이번 글은 μ–΄νˆ¬λ„ λ”±λ”±ν•˜κ³  쀄글 ν˜•μ‹μ΄λ‹€. λ„ˆλ¬΄ μ–΄λ ΅κ²Œ 생각할 ν•„μš”κ°€ μ—†λŠ” κ°œλ…μ΄λ‹€. λ‹¨μˆœν•˜κ²Œ λ§žμ„œλ³΄μž. μš”μ•½ ν”„λ‘œν† μ½œμ—μ„œ μ‚¬μš©λ˜λŠ” μ œλ„€λ¦­ Placeholder의 λŠλ‚Œμ΄λ‹€. Associated Type은 μ›λž˜ typealiasμ˜€λŠ”λ°, Swift 2.2λΆ€ν„° Associated Typeμ΄λž€ ν‚€μ›Œλ“œλ‘œ λ°”λ€Œμ—ˆλ‹€. μ„€λͺ… μœ„μ˜ 두 가지 κ΄€μ μ—μ„œ 보면 λ‚΄μš©μ€ 크게 어렡지 μ•Šλ‹€. μ•„λž˜μ˜ μ˜ˆμ‹œλ‘œ ν•¨κ»˜ 이해해보겠닀. μš°μ„  ν”„λ‘œμ νŠΈμ— λŒ€ν•΄ 잠깐 이해해보면, ν”„λ‘œμ νŠΈλŠ” ν˜„μž¬ MVVM νŒ¨ν„΄μ„ λ”°λ₯΄κ³  μžˆλ‹€. λ‹€μŒ ν”„λ‘œμ νŠΈμ—μ„œλŠ” λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μ²˜λ¦¬ν•˜λŠ” ViewModel을 κ΅¬ν˜„ν•΄μ•Ό ν•œλ‹€. 보톡 각 ViewControlle..
·🍎 iOS & Swift
ν•΄λ‹Ή 글에 μ‚¬μš©λœ μ˜ˆμ‹œλŠ” 2가지 κΈ€μ—μ„œ κ°€μ Έμ™”μŠ΅λ‹ˆλ‹€. μΆœμ²˜λŠ” κΈ€ λ§ˆμ§€λ§‰μ— μ μ–΄λ†“μ•˜μŠ΅λ‹ˆλ‹€. μ°Έκ³ ν•˜μ…”μ„œ κΈ€ μ½μ–΄μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€ :) πŸ’¬ 듀어가기전에 κ²°λ‘ λΆ€ν„° λ§ν•˜κ³  μ‹œμž‘ν•˜κ² μŠ΅λ‹ˆλ‹€. typealiasλŠ” μ½”λ“œλ₯Ό μ’€ 더 κ°„κ²°ν•˜κ²Œ κ°€λ…μ„±μžˆκ²Œ μž‘μ„±ν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©ν•©λ‹ˆλ‹€. μ–Έμ œ μ‚¬μš©ν•˜λƒκ΅¬μš”? 정닡은 μ—†μŠ΅λ‹ˆλ‹€. λ‹€λ§Œ 일반적으둜 μ‚¬μš©ν•˜λŠ” κ²½μš°λŠ” 있죠. 이번 κΈ€μ—μ„œλŠ” κ·Έ 뢀뢄에 λŒ€ν•΄μ„œ ν•¨κ»˜ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. πŸ—’ typealiasλž€ typealiasλž€ νƒ€μž…μ— 뢙일 수 μžˆλŠ” 별칭, μ•½μΉ­μž…λ‹ˆλ‹€. typealias (μ‚¬μš©ν•  별λͺ…) = (μ‘΄μž¬ν•˜λŠ” νƒ€μž…) ex) typealias Nickname = Int ex) typealias Codable = Decodable & Encodable ex) ... typealiasλŠ” μƒˆ..
·🍎 iOS & Swift
μ—΄μ‹¬νžˆ 데이터λ₯Ό λ°›μ•„μ™€μ„œ UI에 λΏŒλ €μ£ΌλŠ” μž‘μ—… 쀑 λ„μ €νžˆ κ°€λ§Œνžˆ μžˆμ„ 수 μ—†λŠ” μ΄μŠˆκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. ν…μŠ€νŠΈ κ°’ μ•ˆμ— html νƒœκ·Έκ°€ ν¬ν•¨λ˜μ–΄ μžˆμ–΄ 라벨에 κ·ΈλŒ€λ‘œ ν‘œν˜„λ˜κ³  있던 κ²ƒμž…λ‹ˆλ‹€. νš¨κ³Όκ°€ 적용이 λ˜κ±°λ‚˜ 사라지길 μ›ν–ˆλŠ”λ° μ œκ±°ν•˜λŠ” λ°©ν–₯ μͺ½μœΌλ‘œ κ°€κΈ°λ‘œ ν–ˆμ–΄μš”. 쒋은 μ΅μŠ€ν…μ…˜μ΄ μžˆμ–΄μ„œ κ·ΈλŒ€λ‘œ κ°€μ Έμ™€μ„œ μ‚¬μš©ν•΄λ΄€λŠ”λ° κΉ”λ”ν•˜κ²Œ 적용이 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ΅μŠ€ν…μ…˜μ„ μ΄ν•΄ν•˜λŠ” μ‹œκ°„λ„ κ°€μ§ˆ ν•„μš”κ°€ μžˆμ„ 것 κ°™μŠ΅λ‹ˆλ‹€. μš°μ„ μ€ κ·Έλƒ₯ μ‚¬μš©ν•˜λŠ” κ²ƒμœΌλ‘œ ν•˜κ² μŠ΅λ‹ˆλ‹€~! μΆ”κ°€λ˜λŠ” λ‚΄μš©μ΄ 있으면 μ—…λ°μ΄νŠΈ ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€ :) // ν…μŠ€νŠΈμ— ν¬ν•¨λ˜μ–΄ μžˆλŠ” HTMLνƒœκ·Έ μ œκ±°ν•˜κΈ° (μ΅μŠ€ν…μ…˜) extension String { // html νƒœκ·Έ 제거 + html entityλ“€ λ””μ½”λ”©. var htmlEscaped: String { guar..
·🍎 iOS & Swift
μ•ˆλ…•ν•˜μ„Έμš”, νƒœλΌμž…λ‹ˆλ‹€~ μ˜€λŠ˜μ€ Convenience initializerκ°€ 무엇인지 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€! μ΄λ‹ˆμ…œλΌμ΄μ €λŠ” 크게 2가지λ₯Ό μ‚΄νŽ΄λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. Designated initializer, Covenience initializer μ°¨λ‘€λŒ€λ‘œ 지정 μ΄λ‹ˆμ…œλΌμ΄μ €, 편의 μ΄λ‹ˆμ…œλΌμ΄μ €λΌκ³  해석해볼 수 μžˆλŠ”λ°, 지정 μ΄λ‹ˆμ…œλΌμ΄μ €λŠ” 클래슀(ꡬ쑰체)λ‚΄μ˜ λͺ¨λ“  ν”„λ‘œνΌν‹°κ°€ μ΄ˆκΈ°ν™”λ  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” μ΄λ‹ˆμ…œλΌμ΄μ €μ΄κ³ , 편의 μ΄λ‹ˆμ…œλΌμ΄μ €λŠ” 좔가적인 μž‘μ—…μ„ ν•  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” 보쑰 μ΄λ‹ˆμ…œλΌμ΄μ €μž…λ‹ˆλ‹€. Designated init 의 νŒŒλΌλ―Έν„° 일뢀λ₯Ό κΈ°λ³Έκ°’μœΌλ‘œ μ„€μ •ν•΄μ„œ Convenience init μ•ˆμ—μ„œ Designated init 을 ν˜ΈμΆœν•΄μ„œ μ“Έ 수 μžˆμŠ΅λ‹ˆλ‹€. μ€‘μš”ν•œ ν¬μΈνŠΈλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. Convenience i..
·🍎 iOS & Swift
μ•ˆλ…•ν•˜μ„Έμš”, νƒœλΌμž…λ‹ˆλ‹€ :) μš”μ¦˜μ—λŠ” ν•œ 단계 더 μ„±μž₯ν•˜κΈ° μœ„ν•΄μ„œ λ‹€μ‹œ κΈ°μ΄ˆλΆ€ν„° μ°¨κ·Όμ°¨κ·Ό κ³΅λΆ€ν•˜λŠ” μ€‘μž…λ‹ˆλ‹€. ν™•μ‹€νžˆ 곡뢀λ₯Ό ν•˜λ‹€λ³΄λ‹ˆ 이전에 아무 생각없이 μž‘μ„±ν•˜λ˜ μ½”λ“œλ‚˜ κ°œλ…λ“€μ΄ λˆˆμ— ν™• λ„λ”λΌκ΅¬μš”... μ•Œκ³  μ‚¬μš©ν•˜λŠ”κ±°λž‘ λͺ¨λ₯΄κ³  μ‚¬μš©ν•˜λŠ”κ±°λž‘μ€ μ—­μ‹œ μ—„μ²­λ‚œ 차이이기 λ•Œλ¬Έμ— 항상 κΈ°μ΄ˆλΆ€ν„° νƒ„νƒ„νžˆ ν•©μ‹œλ‹€... (근데 기초만 κ³΅λΆ€ν•˜λ‹€λ³΄λ©΄ ν₯λ―Έκ°€ λ–¨μ–΄μ§€λŠ”κ±΄ 사싀... κ·ΈλŸ¬λ‹ˆκΉŒ 적절히 μš”λ¦¬μ‘°λ¦¬ μ•„μ‹œμ£ ...? πŸ˜‹) frame vs bounds μ˜€λŠ˜μ€ frameκ³Ό bounds에 λŒ€ν•΄ 정리할 κ±°μ˜ˆμš”. μ•„ 근데, μš”μ•½λ²„μ „μ΄λ‹ˆκΉŒ μžμ„Έν•˜μ§€ μ•Šμ•„λ„ μ΄ν•΄ν•΄μ£Όμ„Έμš”... κΌΌκΌΌν•œ μ„€λͺ…버전은 λ‚˜μ€‘μ—... μš°μ„  λ‹€ μ΄ν•΄ν•˜κ³  λ‚˜μ„œ 정리λ₯Ό 해보면 frameκ³Ό bounds의 μ°¨μ΄λŠ” λ‹€μŒ 3κ°€μ§€λ‘œ 정리할 수 μžˆμ„ 것 κ°™μŠ΅λ‹ˆλ‹€. μ’Œν‘œκ³„μ— λŒ€ν•œ μ°¨..
·🍎 iOS & Swift
μš°λ¦¬λŠ” μ˜΅μ…”λ„μ— λŒ€ν•΄ λ¬Όμ—ˆμ„ λ•Œ, μ–Όλ§ˆλ‚˜ 잘 λŒ€λ‹΅ν•  수 μžˆμ„κΉŒ? Summary μ˜΅μ…”λ„μ€ λ³€μˆ˜μ— 값이 μžˆμ„ μˆ˜λ„ 있고, 없을 μˆ˜λ„ μžˆλŠ” μƒνƒœ(nil)λ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•΄ Swift에 λ„μž…λœ κ°œλ…μž…λ‹ˆλ‹€. μ˜΅μ…”λ„μ€ Enum ν˜•νƒœλ‘œ μ •μ˜λ˜μ–΄ 있고, κ°’μ˜ 있고 μ—†μŒμ„ 각 Case둜 가지고 μžˆμŠ΅λ‹ˆλ‹€. μ˜΅μ…”λ„λ‘œ ν‘œν˜„λœ 값에 μ ‘κ·Όν•˜λŠ” λ°©λ²•μœΌλ‘œλŠ” Forced Unwrapping(κ°•μ œ μ–Έλž˜ν•‘), Optional Binding(μ˜΅μ…”λ„ 바인딩), Nil-Coalescing Operator(Nilλ³‘ν•©μ—°μ‚°μž)κ°€ μžˆμŠ΅λ‹ˆλ‹€. μ˜΅μ…”λ„ 체이닝을 ν†΅ν•΄μ„œ μ˜΅μ…”λ„ λ°”μΈλ”©μœΌλ‘œ ν‘œν˜„λœ μ½”λ“œλ₯Ό κ°„κ²°ν•˜κ²Œ μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ˜΅μ…”λ„(Optional) λ„ˆλž€ 녀석 μ˜΅μ…”λ„μ˜ 의미 자 μš°λ¦¬λŠ” κ·Όλ³ΈμžˆλŠ” 개발자이기 λ•Œλ¬Έμ— Apple 곡식 λ¬Έμ„œλ₯Ό 보도둝 ν•˜μ£ . (..
Β·πŸ“© Essay
'회고'κ°€ 쒋은 μŠ΅κ΄€μ΄ 될 수 μžˆκ² λ‹€λΌλŠ” 생각이 λ“€μ–΄μ„œ 달이 마무리되면 μ§€λ§‰ν•˜κ²Œ λͺ‡ 쀄 남기렀고 ν•œλ‹€. ν•œ 달을 μ—΄μ‹¬νžˆ μ‚΄ 수 μžˆλŠ” 원동λ ₯이 될 μˆ˜λ„ μžˆμ§€ μ•Šμ„κΉŒ! λ§ˆμ§€λ§‰μ΄ λ§Žμ•˜λ˜ 7μ›” 7월은 정말 λ§ˆμ§€λ§‰μ΄ λ§Žμ•˜λ˜ 달이닀. κ³Ό μ‚¬λžŒλ“€κ³Ό μ§„ν–‰ν•˜λ˜ μ•Œκ³ λ¦¬μ¦˜ μŠ€ν„°λ””μ˜ 일차적인 λ§ˆμ§€λ§‰ 3μ£Όκ°„μ˜ ν”„λ‘œμ νŠΈ, νŒ€λΉŒλ”© ~ 데λͺ¨λ°μ΄κΉŒμ§€ μ„±κ³΅μ μœΌλ‘œ μ§„ν–‰λœ APP JAM의 λ§ˆμ§€λ§‰ 2021λ…„ λ§Žμ€ μ‹œκ°„μ„ μŸμ•˜λ˜, IT 벀처 μ°½μ—… 동아리 SOPT의 λ§ˆμ§€λ§‰ μ–Έμ œλ‚˜ λ§ˆμ§€λ§‰μ€ 되게 아쉽고 λ§Žμ€ 생각이 λ“€κ²Œ ν•œλ‹€. μ’‹μ•˜λ˜ 좔얡도 많이 μƒκ°λ‚˜κ³ , λ‚΄κ°€ 더 μž˜ν•  κ±Έμ΄λΌλŠ” ν›„νšŒλ„ 남기고 그만큼 λ‚˜λ₯Ό 더 많이 λŒμ•„λ³΄κ²Œ ν•œλ‹€. λ§ˆμ§€λ§‰μ΄λΌλŠ” μˆœκ°„ μ†μ—μ„œ 정말 λ§Žμ€ 것을 배우고 λŠκΌˆλ‹€. ν•¨κ»˜ν•΄μ€€ λͺ¨λ“  μ‚¬λžŒλ“€μ—κ²Œ 감사λ₯Ό μ „ν•˜κ³  μ‹Άλ‹€. λ‹€κ°€μ˜€λŠ” 8μ›”..