/iOSInterviewquestions

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ปiOS ๋ฉด์ ‘์— ๋‚˜์˜ฌ ์งˆ๋ฌธ๋“ค ์ด ์ •๋ฆฌ

Primary LanguageSwift

iOSInterviewquestions

iOS๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ํ•„์š”ํ•œ ์ž๋ฃŒ๋“ค์„ ์ •๋ฆฌํ•˜๊ณ  ์žˆ๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.

๋ฉด์ ‘๋•Œ ๋ฐ›์€ ์งˆ๋ฌธ์ด๋‚˜ ๊ณต๋ถ€ํ•œ๋‚ด์šฉ๋“ค

์ˆ˜์ •ํ•ด์•ผํ•  ๋‚ด์šฉ์ด๋‚˜ ์ถ”๊ฐ€ํ•ด์•ผํ•  ๋‚ด์šฉ์€ ์–ธ์ œ๋“ ์ง€ PR๋‚ ๋ ค์ฃผ์„ธ์š”!

๋‹ต์ด ์ ํ˜€์žˆ์ง€ ์•Š์€ ์ด์œ ๋Š” ํ•ด๋‹น ๋‚ด์šฉ์„ ์•”๊ธฐ์‹์œผ๋กœ ์™ธ์šฐ๊ธฐ ๋ณด๋‹ค ์ฐพ์•„๋ณด๊ณ  ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์Šต๋“ ํ•˜์‹œ๋Š”๊ฒŒ ์ข‹๊ธฐ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
ํ•ด๋‹น๋‚ด์šฉ์„ ์ฐพ์•„๋ณด๋ฉด์„œ ๊ด€๋ จ๋œ ๋‚ด์šฉ๋“ค ๊นŒ์ง€ ๊ฐ™์ด ๊ณต๋ถ€ํ•˜์‹œ๋ฉด์„œ ํ•ด๋‹น ๋‚ด์šฉ์„ ๋ณธ์ธ์˜ ๊ฒƒ์œผ๋กœ ์–ป์œผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ชจ๋‘์˜ ํž˜์„ ๋ชจ์•„๋ด…์‹œ๋‹ค ๐Ÿ‘ฏโ€โ™€๏ธ๐Ÿ‘ฏโ€โ™‚๏ธ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค:)

Required

์•„๋ž˜ ๋‚ด์šฉ๋“ค์€ ์ตœ๋Œ€ํ•œ ๋งŽ์ด ๊ณต๋ถ€ํ•ด๋†“๋Š”๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค ๐Ÿ“

  • ๋ฉด์ ‘์‹œ๊ธฐ๊ฐ€ wwdc์ดํ›„ (7์›”~11์›”)์ด๋ผ๋ฉด ํ•ด๋‹น๋…„๋„ wwdc์„ธ์…˜๋“ค์„ ๋ด ๋‘์‹œ๋ฉด ๋งค์šฐ๋งค์šฐ๋งค์šฐ ์ข‹์Šต๋‹ˆ๋‹ค.

Apple All Videos

iOS

  • Bounds ์™€ Frame ์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ์‹ค์ œ ๋””๋ฐ”์ด์Šค๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ์—†๋Š” ๊ฒƒ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ์•ฑ์˜ ์ฝ˜ํ…์ธ ๋‚˜ ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ์ €์žฅ/๋ณด๊ด€ํ•˜๋Š” ํŠน๋ณ„ํ•œ ๊ฐ์ฒด๋ฅผ ๋ฌด์—‡์ด๋ผ๊ณ  ํ•˜๋Š”๊ฐ€?
  • ์•ฑ ํ™”๋ฉด์˜ ์ฝ˜ํ…์ธ ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋กœ์ง๊ณผ ๊ด€๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋ฌด์—‡์ด๋ผ๊ณ  ํ•˜๋Š”๊ฐ€?
  • App thinning์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • ์•ฑ์ด ์‹œ์ž‘ํ•  ๋•Œ main.c ์— ์žˆ๋Š” UIApplicationMain ํ•จ์ˆ˜์— ์˜ํ•ด์„œ ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด๋Š” ๋ฌด์—‡์ธ๊ฐ€?
  • @Main์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ์•ฑ์ด foreground์— ์žˆ์„ ๋•Œ์™€ background์— ์žˆ์„ ๋•Œ ์–ด๋–ค ์ œ์•ฝ์‚ฌํ•ญ์ด ์žˆ๋‚˜์š”?
  • ์ƒํƒœ ๋ณ€ํ™”์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋™์ž‘์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์•ฑ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ๋ฉ”์„œ๋“œ๋“ค์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ์•ฑ์ด In-Active ์ƒํƒœ๊ฐ€ ๋˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • scene delegate์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • UIApplication ๊ฐ์ฒด์˜ ์ปจํŠธ๋กค๋Ÿฌ ์—ญํ• ์€ ์–ด๋””์— ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š”๊ฐ€?
  • App์˜ Not running, Inactive, Active, Background, Suspended์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • NSOperationQueue ์™€ GCD Queue ์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • GCD API ๋™์ž‘ ๋ฐฉ์‹๊ณผ ํ•„์š”์„ฑ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Global DispatchQueue ์˜ Qos ์—๋Š” ์–ด๋–ค ์ข…๋ฅ˜๊ฐ€ ์žˆ๋Š”์ง€, ๊ฐ๊ฐ ์–ด๋–ค ์˜๋ฏธ์ธ์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • iOS ์•ฑ์„ ๋งŒ๋“ค๊ณ , User Interface๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ ์ด๋ฆ„์€ ๋ฌด์—‡์ธ๊ฐ€?
  • Foundation Kit์€ ๋ฌด์—‡์ด๊ณ  ํฌํ•จ๋˜์–ด ์žˆ๋Š” ํด๋ž˜์Šค๋“ค์€ ์–ด๋–ค ๊ฒƒ์ด ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Delegate๋ž€ ๋ฌด์–ธ์ธ๊ฐ€ ์„ค๋ช…ํ•˜๊ณ , retain ๋˜๋Š”์ง€ ์•ˆ๋˜๋Š”์ง€ ๊ทธ ์ด์œ ๋ฅผ ํ•จ๊ป˜ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • NotificationCenter ๋™์ž‘ ๋ฐฉ์‹๊ณผ ํ™œ์šฉ ๋ฐฉ์•ˆ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • UIKit ํด๋ž˜์Šค๋“ค์„ ๋‹ค๋ฃฐ ๋•Œ ๊ผญ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์“ฐ๋ ˆ๋“œ ์ด๋ฆ„์€ ๋ฌด์—‡์ธ๊ฐ€?
  • App Bundle์˜ ๊ตฌ์กฐ์™€ ์—ญํ• ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ๋ชจ๋“  View Controller ๊ฐ์ฒด์˜ ์ƒ์œ„ ํด๋ž˜์Šค๋Š” ๋ฌด์—‡์ด๊ณ  ๊ทธ ์—ญํ• ์€ ๋ฌด์—‡์ธ๊ฐ€?
  • ์ž์‹ ๋งŒ์˜ Custom View๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • View ๊ฐ์ฒด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • UIView ์—์„œ Layer ๊ฐ์ฒด๋Š” ๋ฌด์—‡์ด๊ณ  ์–ด๋–ค ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • UIWindow ๊ฐ์ฒด์˜ ์—ญํ• ์€ ๋ฌด์—‡์ธ๊ฐ€?
  • UINavigationController ์˜ ์—ญํ• ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • TableView๋ฅผ ๋™์ž‘ ๋ฐฉ์‹๊ณผ ํ™”๋ฉด์— Cell์„ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์†Œํ•œ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” DataSource ๋ฉ”์„œ๋“œ๋ฅผ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ํ•˜๋‚˜์˜ View Controller ์ฝ”๋“œ์—์„œ ์—ฌ๋Ÿฌ TableView Controller ์—ญํ• ์„ ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„ํ•ด์„œ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • setNeedsLayout์™€ setNeedsDisplay์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • NSCache์™€ ๋”•์…”๋„ˆ๋ฆฌ๋กœ ์บ์‹œ๋ฅผ ๊ตฌ์„ฑํ–ˆ์„๋•Œ์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • URLSession์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • prepareForReuse์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ๋‹คํฌ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ViewController์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • TableView์™€ CollectionView์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.

Autolayout

  • ์˜คํ† ๋ ˆ์ด์•„์›ƒ์„ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€? (3๊ฐ€์ง€)
  • hugging, resistance์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Intrinsic Size์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ์Šคํ† ๋ฆฌ๋ณด๋“œ๋ฅผ ์ด์šฉํ–ˆ์„๋•Œ์˜ ์žฅ๋‹จ์ ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Safearea์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Left Constraint ์™€ Leading Constraint ์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.

Swift

  • struct์™€ class์™€ enum์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • class์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ ์‹œํ‚ฌ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋“ค์„ ๋‚˜์—ดํ•ด๋ณด์‹œ์˜ค.
  • Copy On Write๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Convinience init์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • AnyObject์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Optional ์ด๋ž€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Struct ๊ฐ€ ๋ฌด์—‡์ด๊ณ  ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Subscripts์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • String์€ ์™œ subscript๋กœ ์ ‘๊ทผ์ด ์•ˆ๋˜๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • instance ๋ฉ”์„œ๋“œ์™€ class ๋ฉ”์„œ๋“œ์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • class ๋ฉ”์„œ๋“œ์™€ static ๋ฉ”์„œ๋“œ์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Delegate ํŒจํ„ด์„ ํ™œ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์˜ˆ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Singleton ํŒจํ„ด์„ ํ™œ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์˜ˆ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • KVO ๋™์ž‘ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Delegates์™€ Notification ๋ฐฉ์‹์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ๋กœ ๋™์ž‘ํ•˜๋Š” ์•ฑ์„ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹๋“ค์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • MVC ๊ตฌ์กฐ์— ๋Œ€ํ•ด ๋ธ”๋ก ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๊ณ , ๊ฐ ์—ญํ• ๊ณผ ํ๋ฆ„์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ํ”„๋กœํ† ์ฝœ์ด๋ž€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Protocol Oriented Programming๊ณผ Object Oriented Programming์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Hashable์ด ๋ฌด์—‡์ด๊ณ , Equatable์„ ์™œ ์ƒ์†ํ•ด์•ผ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • mutating ํ‚ค์›Œ๋“œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ํƒˆ์ถœ ํด๋กœ์ €์— ๋Œ€ํ•˜์—ฌ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Extension์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Extension ๋‚ด๋ถ€์—์„œ ํ•จ์ˆ˜๋ฅผ overrideํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ์ ‘๊ทผ ์ œ์–ด์ž์˜ ์ข…๋ฅ˜์—” ์–ด๋–ค๊ฒŒ ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • defer๋ž€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • defer๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ์ˆœ์„œ๋Š” ์–ด๋–ป๊ฒŒ ๋˜๊ณ , defer๊ฐ€ ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ฅผ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • property wrapper์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Generic์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • some ํ‚ค์›Œ๋“œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Resultํƒ€์ž…์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Codable์— ๋Œ€ํ•˜์—ฌ ์„ค๋ช…ํ•˜์‹œ์˜ค.

ARC

  • ARC๋ž€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Retain Count ๋ฐฉ์‹์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Strong ๊ณผ Weak ์ฐธ์กฐ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ์ˆœํ™˜ ์ฐธ์กฐ์— ๋Œ€ํ•˜์—ฌ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ๊ฐ•ํ•œ ์ˆœํ™˜ ์ฐธ์กฐ (Strong Reference Cycle) ๋Š” ์–ด๋–ค ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.

Functional Programming

  • ์ˆœ์ˆ˜ํ•จ์ˆ˜๋ž€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ๊ณ ์ฐจ ํ•จ์ˆ˜๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Swift Standard Library์˜ map, filter, reduce, compactMap, flatMap์— ๋Œ€ํ•˜์—ฌ ์„ค๋ช…ํ•˜์‹œ์˜ค.

Architecture

  • MVVM, MVI, Ribs, VIP ๋“ฑ ์ž์‹ ์ด ์•Œ๊ณ ์žˆ๋Š” ์•„ํ‚คํ…์ณ๋ฅผ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ์˜์กด์„ฑ ์ฃผ์ž…์— ๋Œ€ํ•˜์—ฌ ์„ค๋ช…ํ•˜์‹œ์˜ค.

SwiftUI

  • @State์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค.

Combine

  • PassthroughSubject์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค
  • @Published์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค
  • AnyCancellable์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค
  • sink์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค
  • throttle๊ณผ debounce์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.

Optional

์•„๋ž˜๋ถ€ํ„ฐ๋Š” ์ถ”๊ฐ€๋กœ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด ์ข‹์„ ๋‚ด์šฉ๋“ค์ž…๋‹ˆ๋‹ค.

Objective-c๋‚˜ rx๋Š” ํšŒ์‚ฌ, ํŒ€๋งˆ๋‹ค ์‚ฌ์šฉํ•˜๋Š”๊ณณ์ด ์ฐจ์ด๊ฐ€์žˆ๊ณ  ์‹ ์ž…์ด๋‚˜ ์ฃผ๋‹ˆ์–ด๊ธฐ์ค€์œผ๋กœ ํ•„์ˆ˜๋ผ๊ณ  ์—ฌ๊ฒจ์ง€์ง€์•Š๊ธฐ์— ์˜ต์…”๋„์— ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

Rx

  • Reactive Programming์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • RxSwift๋ฅผ ์™œ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • RxSwift์˜ ๋‹จ์ ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • RxSwift์—์„œ Hot Observable๊ณผ Cold Observable์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Subject์˜ ์ข…๋ฅ˜์™€ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Subject์™€ Driver์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Single, Completable, Maybe์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ , ์–ธ์ œ ์ ์šฉํ•˜๋ฉด ์ข‹์„์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.

MRC

  • ARC ๋Œ€์‹  Manual Reference Count ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•  ๋•Œ ๊ผญ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋“ค์„ ์“ฐ๊ณ  ์—ญํ• ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • retain ๊ณผ assign ์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ํŠน์ • ๊ฐ์ฒด๋ฅผ autorelease ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์‚ฌํ•ญ๊ณผ ๊ณผ์ •์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Autorelease Pool์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์„ ๋‘ ๊ฐ€์ง€ ์ด์ƒ ์˜ˆ๋กœ ๋“ค์–ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ• ๊นŒ ์ถ”์ธกํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค. Ball *ball = [[[[Ball alloc] init] autorelease] autorelease];

Advanced

  • method swizzling์ด ๋ฌด์—‡์ด๊ณ , ์–ด๋–จ ๋•Œ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • NSCoder ํด๋ž˜์Šค๋Š” ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์–ด๋–ป๊ฒŒ ์จ์•ผ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Responder Chain ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ , First Responder ์—ญํ• ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • NSObject๋ถ€ํ„ฐ UIButton ๊นŒ์ง€ ์ƒ์† ๊ณผ์ •์˜ ๊ณ„์ธต๊ณผ ์—ญํ• ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • shallow copy์™€ deep copy์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Push Notification ๋ฐฉ์‹์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Foundation ๊ณผ Core Foundation ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • NSURLConnection ์—์„œ ์‚ฌ์šฉํ•˜๋Š” Delegate ๋ฉ”์„œ๋“œ๋“ค์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Synchronous ๋ฐฉ์‹๊ณผ Asynchronous ๋ฐฉ์‹์œผ๋กœ URL Connection์„ ์ฒ˜๋ฆฌํ•  ๊ฒฝ์šฐ์˜ ์žฅ๋‹จ์ ์„ ๋น„๊ตํ•˜์‹œ์˜ค.
  • Plist ํŒŒ์ผ ๊ตฌ์กฐ์™€ Plist ํŒŒ์ผ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์ ํ•ฉํ•œ ํด๋ž˜์Šค๋ฅผ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Core Data์™€ Sqlite ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • JSON ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹๊ณผ ํŒŒ์„œ, ๊ฐ์ฒด ๋ณ€ํ™˜ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ์›น ์„œ๋ฒ„์™€ HTTP ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ฑฐ๋‚˜ ๋ฐ›์œผ๋ ค๋ฉด ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ํด๋ž˜์Šค์™€ ๋™์ž‘์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Protocol์—์„œ๋Š” ์™œ var๋งŒ ๋˜๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์š”.
  • DispatchQueue.main.sync๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ƒํ™ฉ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Run Loops์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

Objective-C

  • Swift์˜ ํด๋กœ์ €์™€ Objective-C์˜ ๋ธ”๋ก์€ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š”๊ฐ€?
  • Mutable ๊ฐ์ฒด๊ณผ Immutable ๊ฐ์ฒด๋Š” ์–ด๋–ค๊ฒƒ์ด ์žˆ๋Š”์ง€ ์˜ˆ๋ฅผ ๋“ค๊ณ , ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • dynamic๊ณผ property ์˜๋ฏธ์™€ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • @property๋กœ ์„ ์–ธํ•œ NSString* title ์˜ getter/setter ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด์‹œ์˜ค.
  • @property์—์„œ atomic๊ณผ nonatomic ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜๊ณ , ์–ด๋–ค๊ฒƒ์ด ์•ˆ์ „ํ•œ์ง€, ์–ด๋Š๊ฒƒ์ด ๊ธฐ๋ณธ์ธ์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • @property๋กœ ์„ ์–ธํ•œ๋‹ค๋Š” ๊ฒƒ์˜ ์˜๋ฏธ๋ฅผ ์„ค๋ช…ํ•˜๊ณ , .h์— ๋„ฃ์„ ๊ฒฝ์šฐ์™€ .m์— ๋„ฃ์„ ๊ฒฝ์šฐ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • -performSelector:withObject:afterDelay: ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋ฉด ์ธ์ž๊ฐ’์˜ ๊ฐ์ฒด๋Š” retain๋˜๋Š”๊ฐ€? ๊ทธ ์ด์œ ๋ฅผ ํ•จ๊ป˜ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Objective-C ์—์„œ ์บก์Šํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•๋“ค์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Fast Enumeration ์ด๋ž€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • unnamed category ๋ฐฉ์‹์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Category ํ™•์žฅ๊ณผ Subclass ํ™•์žฅ์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Category ๋ฐฉ์‹์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Objective-C ์—์„œ Protocol ์ด๋ž€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • Objective-C++ ๋ฐฉ์‹์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜๊ณ , ์–ด๋–ค ๊ฒฝ์šฐ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.