๊ธ€ ์ž‘์„ฑ์ž: ๊ฐœ๋ฐœํ•˜๋Š” ํ›ˆ์ด

์ปค์Šคํ…€ ์…€์„ ๋งŒ๋“ค์–ด๋ณด์ž

์ง€๋‚œ ํฌ์ŠคํŠธ๊นŒ์ง€ ํ…Œ์ด๋ธ” ๋ทฐ๋ฅผ ๋งŒ๋“ค์–ด ์ •์ ์œผ๋กœ ์…€์„ ์ž…๋ ฅํ•ด ๋„ฃ๋Š” ๋ฒ•, ํ…Œ์ด๋ธ” ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ ํด๋ž˜์Šค๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์…€๋กœ ๋„ฃ๋Š” ๊ณผ์ •, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์•ˆ์—์„œ ์‚ฌ์šฉ๋˜๋Š” data source์˜ ๊ฐœ๋…๊ณผ ์…€์˜ ์žฌ์‚ฌ์šฉ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด์ œ ํ…Œ์ด๋ธ” ๋ทฐ์˜ ๋งˆ์ง€๋ง‰ ์‹œ๋ฆฌ์ฆˆ์ธ๋ฐ์š”, ์˜ค๋Š˜์˜ ๋ชฉํ‘œ๋Š” UITableViewCell์˜ ์ปค์Šคํ…€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋” ์œ ์—ฐํ•˜๊ฒŒ ์…€์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

 

์˜ˆ์ œ๋“ค์ด ์ด์ „ ํฌ์ŠคํŠธ๋“ค์—์„œ ์ด์–ด์ง‘๋‹ˆ๋‹ค! ํŠนํžˆ ์ด ํฌ์ŠคํŠธ๋ฅผ ์ฝ์ง€ ์•Š์œผ๋ฉด ์˜ˆ์ œ๊ฐ€ ์ดํ•ด๊ฐ€ ์ „ํ˜€ ์•ˆ๋  ์ˆ˜๋„ ์žˆ์–ด์š”! ๊ทธ๋Ÿผ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค~!

 

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ๋Š” ์ด๋Ÿฐ ๋ชจ์–‘์œผ๋กœ ํ…Œ์ด๋ธ” ๋ทฐ๋ฅผ ๊ตฌ์„ฑํ–ˆ์—ˆ๋Š”๋ฐ์š”, ์‚ฌ์‹ค ํ•œ ๊ฐ€์ง€ ๋น ์ง„ ๊ฒƒ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

์—ฌ๊ธฐ์— ๋ณด์ด๋Š” ์ˆ˜/๋ฐœ์‹  ์š”์ผ์ด ๋น ์ ธ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค..! ์ €ํฌ๋Š” ํ…Œ์ด๋ธ” ๋ทฐ์—์„œ ํ…์ŠคํŠธ๋ฅผ ๋„ฃ์–ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ ContentConfigutration์˜ text์™€ secondary text๋ฅผ ์‚ฌ์šฉํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์š”์ผ ๋ ˆ์ด๋ธ”์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๊ฐ€ ์—†์–ด์š”.. ๊ทธ๋ž˜์„œ ์ปค์Šคํ…€ ์…€์„ ๋งŒ๋“ค์–ด์„œ ๋‚ด๋ถ€์— ๋ ˆ์ด๋ธ” ์„ธ ๊ฐœ๋ฅผ ํฌํ•จํ•˜๋Š” ์…€์„ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

ํด๋ž˜์Šค ์ถ”๊ฐ€ํ•˜๊ธฐ

๋จผ์ € ์ปค์Šคํ…€ ์…€์„ ์œ„ํ•œ ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

ํผ์•Œ ๋งŒ๋“ค๊ธฐ์—์„œ Cocoa Touch Class๋ฅผ ์„ ํƒํ•˜๊ณ ์š”,

 

UITableViewCell์„ ์ƒ์†ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค!

 

์ด๋ ‡๊ฒŒ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋Š”๋ฐ์š”, ๋‘ ๊ฐœ์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. setSelected๋Š” ์…€์ด ์„ ํƒ๋˜์—ˆ์„ ๋•Œ์˜ ๋™์ž‘์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ ๊ฐ™์ฃ ? ๊ทธ๋Ÿฐ๋ฐ awakeFromNib()์€ ๋ญ˜๊นŒ์š”? ์ฃผ์„์„ ๋ณด๋‹ˆ ์ดˆ๊ธฐํ™” ์ฝ”๋“œ์ธ ๊ฒƒ ๊ฐ™์€๋ฐ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด์„œ ์ด๋ฒˆ์—๋„ ์—ญ์‹œ ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฐพ์•„๋ดค์Šต๋‹ˆ๋‹ค!

awakeFromNib ์•Œ์•„๋ณด๊ธฐ

https://developer.apple.com/documentation/objectivec/nsobject/1402907-awakefromnib

 

Apple Developer Documentation

 

developer.apple.com

๐Ÿ’ก The nib-loading infrastructure sends an awakeFromNib message to each object recreated from a nib archive, but only after all the objects in the archive have been loaded and initialized. When an object receives an awakeFromNib message, it is guaranteed to have all its outlet and action connections already established.

 

nib๋Š” ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ํด๋ž˜์Šค๋“ค์„ XML๋กœ ์ •์˜ํ•œ XIB๋ฅผ ์ปดํŒŒ์ผํ•œ ํŒŒ์ผ์ธ๋ฐ์š”, nib๊ฐ€ ์•„์นด์ด๋ธŒ ๋˜์–ด์žˆ๋‹ค๊ฐ€ ๊ฐ์ฒด๋กœ ์ƒ์„ฑ๋  ๋•Œ ์•„์นด์ด๋ธŒ์— ํฌํ•จ๋œ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์ดˆ๊ธฐํ™”๋˜๋ฉด awakeFromNib ๋ฉ”์‹œ์ง€๋ฅผ ๋‚ด๋ถ€์ ์œผ๋กœ ๊ฐ์ฒด๋“ค์—๊ฒŒ ๋ณด๋‚ธ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์•„์นด์ด๋ธŒ๋Š” ์–ด๋–ค ํด๋ž˜์Šค์™€ ๊ทธ ํด๋ž˜์Šค์™€ ์ฐธ์กฐ ๊ด€๊ณ„์— ์žˆ๋Š” ํด๋ž˜์Šค๊นŒ์ง€ ๊ทธ๋ž˜ํ”„๋กœ ๋ฌถ์–ด์„œ ์ €์žฅ(์•„์นด์ด๋น™)ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด๋“ค์ด ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์œผ๋ฉด ์ž์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์•„์›ƒ๋ › ๋ณ€์ˆ˜์™€ ์•ก์…˜ ๋ฉ”์„œ๋“œ๊ฐ€ ๋ชจ๋‘ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Œ์„ ๋ณด์žฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ awakeFromNib์€ ํ™”๋ฉด์— ๋ณด์ด๋Š” ์ •๋ณด๋“ค์„ ๋‹ด์€ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ&์ดˆ๊ธฐํ™”๋ฅผ ๋ชจ๋‘ ์™„๋ฃŒํ•œ ๋’ค์— ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

 

๐Ÿ’ก You must call the super implementation of awakeFromNib to give parent classes the opportunity to perform any additional initialization they require. Although the default implementation of this method does nothing, many UIKit classes provide non-empty implementations. You may call the super implementation at any point during your own awakeFromNib method.

 

awakeFromNib์€ ๋ฐ˜๋“œ์‹œ super๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋„ ํ•จ๊ป˜ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ UIKit ํด๋ž˜์Šค๋“ค์ด ์—ฌ๊ธฐ์— ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ•˜๋„ค์š”. ์ปค์Šคํ…€ ํด๋ž˜์Šค๋“ค์€ ๋Œ€๋ถ€๋ถ„ UIKit ํด๋ž˜์Šค๋“ค์„ ์ƒ์†ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ํ˜ธ์ถœํ•ด์•ผ๊ฒ ๋„ค์š”.

 

๐Ÿ’ก During the instantiation process, each object in the archive is unarchived and then initialized with the method befitting its type. Objects that conform to the NSCoding protocol (including all subclasses of UIView and UIViewController) are initialized using their initWithCoder: method. All objects that do not conform to the NSCoding protocol are initialized using their init method. After all objects have been instantiated and initialized, the nib-loading code reestablishes the outlet and action connections for all of those objects. It then calls the awakeFromNib method of the objects. For more detailed information about the steps followed during the nib-loading process, see Nib Files in Resource Programming Guide.

 

๊ฐ์ฒด๋“ค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  awakeFromNib์ด ๋ถˆ๋ฆฌ๊ธฐ๊นŒ์ง€์˜ ๊ณผ์ •์— ๋Œ€ํ•œ ๋” ์ž์„ธํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค. ๊ฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ณผ์ •์—์„œ ์•„์นด์ด๋ธŒ ๋˜์—ˆ๋˜ ๊ฐ ๊ฐ์ฒด๋“ค์€ ์–ธ์•„์นด์ด๋ธŒ๊ฐ€ ๋˜๋ฉด์„œ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ NSCoding ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋“ค์€ ๋ชจ๋‘ initWithCoder ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๊ทธ ์™ธ์˜ ๊ฐ์ฒด๋“ค์€ ์ž์‹ ์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด nib-loading ์ฝ”๋“œ๊ฐ€ ๊ฐ์ฒด๋“ค์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” outlet๊ณผ action์„ ๋‹ค์‹œ ์—ฐ๊ฒฐํ•˜๋Š” ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๋งˆ์ง€๋ง‰์œผ๋กœ awakeFromNib ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ’ก Typically, you implement awakeFromNib for objects that require additional set up that cannot be done at design time. For example, you might use this method to customize the default configuration of any controls to match user preferences or the values in other controls. You might also use it to restore individual controls to some previous state of your application.

 

awakeFromNib์€ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ์ˆœ๊ฐ„์— ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ผ๋“ค ๊ตฌํ˜„ํ•ด๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Control์— ๋Œ€ํ•œ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ด์ „ ์ƒํƒœ๋ฅผ ๋ณต์›ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์ฃ !

 

์ปค์Šคํ…€ ์…€ ๋งŒ๋“ค๊ธฐ

๊ทธ๋Ÿผ ์ด์ œ ์ปค์Šคํ…€ ์…€์„ ๋งŒ๋“ค์–ด์„œ ๋ฐฉ๊ธˆ ์ƒ์„ฑํ–ˆ๋˜ ํด๋ž˜์Šค์™€ ์—ฐ๊ฒฐํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ปค์Šคํ…€ ์…€์„ ๋งŒ๋“œ๋ ค๋ฉด XIB๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋งž๊ฒ ์ง€๋งŒ ์—ฌ๊ธฐ์„œ๋Š” ์ƒ๋žตํ•˜๊ณ  ์ด์ „ ํฌ์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ ์žฌ์‚ฌ์šฉ ์…€์— ํด๋ž˜์Šค๋งŒ ์ž…ํ˜€์ฃผ๋„๋ก ํ• ๊ฒŒ์š”.

 

๋จผ์ € ์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ ๋งŒ๋“ค์–ด๋‘์—ˆ๋˜ ์žฌ์‚ฌ์šฉ ์…€์— ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•œ ์ปค์Šคํ…€ ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

 

์„ธ ์ข…๋ฅ˜์˜ ๋ ˆ์ด๋ธ”์ด ํ•„์š”ํ•˜๊ฒ ์ฃ ? 

 

๊ทธ๋ฆฌ๊ณ  ์ด ๋ ˆ์ด๋ธ”๋“ค์— ์ ‘๊ทผํ•ด์„œ ๊ฐ’์„ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•˜๋‹ˆ, Outlet ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ 3๊ฐœ์˜ UILabel์— ๋Œ€ํ•œ Outlet ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ ,

 

์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ์ด๋™ํ•ด์„œ ์ด๋ ‡๊ฒŒ Outlet๊ณผ ๋งŒ๋“ค์–ด๋‘” ๋ ˆ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. 

 

๊ทธ๋Ÿผ ์ด์ œ ์ค€๋น„๋Š” ๋œ ๊ฒƒ ๊ฐ™๋„ค์š”. ์ด์ œ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ด๋™ํ•ด์„œ ์…€ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ํ…Œ์ด๋ธ” ๋ทฐ์—๊ฒŒ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” cellForRowAt ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์…€์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž…ํ˜€ ๋ฐ˜ํ™˜ํ•˜๊ธฐ

์ด์ „ ํฌ์ŠคํŠธ์—์„œ ๊ตฌํ˜„ํ–ˆ๋˜ ๋ฉ”์„œ๋“œ์—์„œ ์ˆ˜์ •ํ•  ์‚ฌํ•ญ๋“ค์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค! ๋จผ์ € dequeueReusableCell์—์„œ ์…€์„ ๊บผ๋‚ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…ํ˜€์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ์š”,

์ด ๋ฉ”์„œ๋“œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์ปค์Šคํ…€ ํด๋ž˜์Šค์˜ ์ƒ์œ„ ํด๋ž˜์Šค์ธ UITableViewCell ํด๋ž˜์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด ์ƒํƒœ๋กœ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ๋ ˆ์ด๋ธ”๋“ค์˜ Outlet ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜๊ฐ€ ์—†์ฃ . ์ด๋ฅผ ์œ„ํ•ด์„œ ๋ฐ˜ํ™˜๋ฐ›์€ UITableViewCell์„ ์ปค์Šคํ…€ ํด๋ž˜์Šค๋กœ ๋‹ค์šด์บ์ŠคํŒ…์„ ํ•ด์ฃผ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

 

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCell
.
.
.

์ด๋ ‡๊ฒŒ์š”!

 

๊ทธ๋Ÿผ ์ด์ œ Outlet ๋ณ€์ˆ˜๋“ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒ ์ฃ ? ์ง€๊ธˆ๋ถ€ํ„ฐ๋Š” ์ด์ „ ํฌ์ŠคํŠธ์—์„œ ๊ตฌํ˜„ํ–ˆ๋˜ ๋‚ด์šฉ์„ ์กฐ๊ธˆ๋งŒ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค~!

 

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCell
        cell.name.text = sections[indexPath.section][indexPath.row].name
        cell.callType.text = sections[indexPath.section][indexPath.row].type
        cell.day.text = sections[indexPath.section][indexPath.row].day
        cell.accessoryType = .detailButton
        return cell
    }

์žฌ์‚ฌ์šฉ ์…€ ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ฐ€์ง„ Outlet ๋ณ€์ˆ˜์ธ ๋ ˆ์ด๋ธ”๋“ค์— ํ˜„์žฌ ์ธ๋ฑ์Šค์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ๋ถˆ๋Ÿฌ์™€ ๋„ฃ์–ด์ฃผ๊ณ  ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋์ž…๋‹ˆ๋‹ค! 

 

๊ทธ๋Ÿผ ์‹คํ–‰ํ•ด๋ณด์ฃ !

์ด์ œ ์ œ๋ฒ• ์—ฐ๋ฝ์ฒ˜ ์•ฑ์˜ ํ…Œ์ด๋ธ”๊ณผ ๋น„์Šทํ•ด์กŒ๋„ค์š”~! 

 

์ฃผ๋ง์„ ๋ชจ๋‘ ์ผ๋˜ ํ…Œ์ด๋ธ” ๋ทฐ ์ •๋ณตํ•˜๊ธฐ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹คใ… ใ…  XIB๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ปค์Šคํ…€ ์…€์„ ๋งŒ๋“ค๊ณ  ์ฝ”๋“œ๋กœ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ๋„ ํ•˜๊ณ ์‹ถ์€๋ฐ ์ด๋ฒˆ์ฃผ ์ค‘์œผ๋กœ ์ด ํฌ์ŠคํŠธ์— ์—…๋ฐ์ดํŠธ ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!!