[Cocoa Design Pattern] 17ch. Outlet, Target, Action
**
์์๋ ํ๊น ์ก์
**
**
**
ํนํ๋ ๊ธฐ๋ฅ์ ์ดํ๋ฆฌ์ผ์ด์
์ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด?
ย
**๋ฐฉ๋ฒ 1 : ์๋ธํด๋์ค๋ฅผ ๊ตฌํํ๋๊ฒ**
โ ย ย ย ย ๋จ์ 1: ํนํ๋๋ ๊ธฐ๋ฅ์ ๋ฐ๋ฅธ ์๋ธ ํด๋์ฑ์ ์๊ฐ์ฆ๊ฐํจ
โ ย ย ย ย ๋จ์ 2: MVC ์์คํ
์ ๊ฐ ์์ญ์ ์นจ๋ฒํ๊ฒ ๋จ
โ ย ย ย ย ๋จ์ 3: ๋ค๋ฅธ ์ธํฐํ์ด์ค์์ ๋น์ทํ ๊ธฐ๋ฅ์ ์๊ตฌํ ์, ๊ฐ๊ฐ์ ์๋ธํด๋์ค์์ ๋น์ทํ ์ฝ๋๊ฐ ์์ฑ๋๋ย
ย ย ย ย ย ย ย ย ย ย ย ์ค๋ณต์ฑ์ด ์๊น.
ย
**๋ฐฉ๋ฒ 2 : ๊ฐ์ฒด ๊ธฐ๋ฐ์ ํ๋ ์์ํฌ์์ ์ฌ์ฉํ๋ ์ฌ์ฉ์์ธํฐํ์ด์ค์ ๊ณ ์ ํ ID๋ฅผย ๋ถ์ฌํ๋ ๋ฐฉ์์ผ๋ก
ย ย ย ย ย ย ํด๋น ID์ ๋ฐ๋ฅธ ํด๋น ๊ฐ์ฒด๋ฅผ ๋งค์นญ์ํค๋ ๋ฐฉ์**
ย
โ ย ย ย ๋จ์ 1: ๊ฐ์ฒด์ ์ปจํธ๋กค๋ฌ ๊ฐ์ ID ๋ชฉ๋ก์ ๋์ผํ๊ฒ ๋๊ธฐํ, ์์กด์ฑ ๋ฐ์
โ ย ย ย ๋จ์ 2 : ํด๋น ID์๋ํ ๊ด๋ฆฌ ๋ฐ ๋งค์นญ์ ์ํ ๋น์ฉ์ด ๋ฐ์
ย
****
**์ฝ์ฝ์์ ์์๋ , ํ๊น,์ก์
๋์์ธ ํจํด์ ์ด์ฉํ๋ฉด?**
โ ย ย ย ์ธํฐํ์ด์ค ๊ตฌํ ๊ฐ์ํ
โ ย ย ย ์ ์ฐ์ฑ๊ณผ ์ ์ฉ์ฑ ์ฆ๋
**
ํจํด์ด ๋ง๋ค์ด์ง๋๊ธฐ**
ย
โ ย ย ย ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ฐ์ฒด๋ฅผ ์ง์ ์ค์ ๋ฐ ์กฐ์ ๊ฐ๋ฅ
โ ย ย ย ์ก์
์ ์ ๊ฐ๋ฅ
โ ย ย ย ํนํ๋ ์ก์
๊ณผ ๊ฑฐ๋ฆฌ๋ฅผ ๋์ด ์์กด์ฑ์ด ์ผ์ด๋์ง ์๋๋ก ํ๋ค.
โ ย ย ย ์ฝ๋ ์ค๋ณต X
โ ย ย ย ์ปจํ
์คํธ ์ธ์ ๊ฐ๋ฅ
ย
ย
**ํจํด์ผ๋ก ๋ฌธ์ ํด๊ฒฐ**
ย
**์์๋ (Outlet)**
โ ย ย ย ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ฐ์ฒด์ ๋ํ ๋ ํผ๋ฐ์ค๋ฅผ ํฌ์ธํฐ๋ก ์ ์ฅํด ๋์ ์ธ์คํด์ค ๋ณ์
โ ย ย ย ์ธํฐํ์ด์ค ๋น๋, ๋ฐํ์์ ์ค์
โ ย ย ย ๋ช
๋ช
๋ฒ
ย ย ย ย : IBOutlet
ย ย ย ย ย : ์ธ์คํด์ค ๋ณ์ ํ์
์ด id ์ด๊ณ , ์ฒซ๊ธ์๊ฐ _ ์ด ์๋ ๊ฒฝ์ฐ
ย ย
ex)
Id sampleOutlet ;
IBOutlet *smapleMatrix ;
Id _sambleVar;** //not outlet**
ย
ย
**ํ๊น(Target)**
โ ย ย ย ํน๋ณํ ์์๋ ์ ์ข
๋ฅ์ค ํ๋
โ ย ย ย ์ก์
๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๋ ์ฅ์(๋ฅผ ์ง์ )
โ ย ย ย NSControl, NSActionCell,NSMenuItem ํด๋์ค์์๋ target ์์๋ ๊ณผ action์ด๋ผ๋ ์ธ์คํด์ค ๋ณ์ ์ ๊ณต
ย
โ ย ย ย nib ํ์ผ ๋ก๋์, ์์๋ ์ฐ๊ฒฐ๊ณผ ํ๊น โ ์ก์
๊ฐ์ ์ฐ๊ฒฐ๋ ์ด๋ฃจ์ด ์ง๋ค.
โ ย ย ย ํ๋ก๊ทธ๋๋ฐ ์์์ target, setTarget ๋ฉ์๋๋ก์ค์ ๊ฐ๋ฅ
ย
**์ก์
(Action)**
โ ย ย ย ย void๋ฅผ ๋ฐํํ๋ฉฐ ๊ฐ์ฒด ํ๋๋ฅผ ์ธ์๋ก ๋ฐ๋ ๋ฉ์๋๋ผ๋ฉด ์ก์
๋ฉ์๋๋ก ๊ฐ๋ฅย
โ ย ย ย ย ํ๋ก๊ทธ๋๋ฐ ์์์ action, setAction ๋ฉ์๋๋ก์ค์ ๊ฐ๋ฅ
โ ย ย ย ย @selector ๋ก ์ก์
๋ฉ์๋๊ฐ ์ทจ๊ธ๋์ด ์ ์ฅ๋จ.
ย ย ย ย ย : objective-c ์์ ๋ฉ์์ง๋ฅผ ์ํ ๊ณ ์ ์๋ณ์
ย ย ย ย ย : ์ปดํ์ผ๋ฌ ์ง์์์ค @selector() ์ฌ์ฉ
ย
ย ย ย ย ย [someControl setAction:@selector(copy:)];
ย
ย ย ย ย : NSSelectorFromString, NSStringFromSelector
ย
โ ย ย ย ๊ฐ ํด๋์ค ๋ง๋ค ์์ฑ๋๋ ์ด๋ฒคํธ์ ๊ฒฝ์ฐ๊ฐ ๋ค๋ฅด๋ค. (touch,slide.. etc)
ย
โ ย ย ย ์ก์
๋ฉ์์ง๋ NSApplication ์ โsendAction:to:from: ๋ฉ์๋ฅผ ์ฌ์ฉํด์ ๋ฉ์์ง ์ ์ก๋จ.
ย
โ ย ย ย NSApplciation์ ์ฑ๊ธํค ํจํด์ ์)
ย ย ย ย [NSApplication sharedApplication];
ย
sendAction : @selector ๋ก ๋ณด๋ผ ๋ฉ์์ง๋ฅผ์ง์
to : ์ด๋๋ก ๋ณด๋ผ๊ฒ์ธ์ง. (target)
from : ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋๊ฐ์ฒด๋ก ๋ฉ์๋๋ก ์ ๋ฌ๋ ๊ฐ์ฒด
ย
ย ย
**[* nib ํ์ผ์ด ๋ก๋ฉ๋๋ ๊ณผ์ ย ](http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html "[http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html]๋ก ์ด๋ํฉ๋๋ค.")**
**
**
*** ์ธํฐํ์ด์ค ๊ฐ์ฒด์ ์์๋ ์ ์ฐ๊ฒฐ**
NSNibOutletConnector ํด๋์ค
โ ย ย ย ์์๋ ๊ณผ ๋ค๋ฅธ ๊ฐ์ฒด๊ฐ์ ์ฐ๊ฒฐ๊ด๊ณ ์ ๋ณด ์ ์ฅ
ย ย ย ย nib ํ์ผ๋ก ๋ถํฐ ์ธํฐํ์ด์ค ๊ฐ์ฒด ๋ก๋
ย ย ย ย establishConnection() ์คํย : ์ธํฐํ์ด์ค ๊ฐ์ฒด์ ์ฐ๊ฒฐ๋์ด์ผ ํ๋ ์์๋ ์ ์ฐพ์์ ๊ธฐ๋ก
ย ย ย ย ์์๋ ์ ๊ทผ์ ๋ฉ์๋๊ฐ ์์ผ๋ฉด, ๋ฐํ์์, ํด๋น ์ ๊ทผ์์ฐพ์์ ํธ์ถ
ย
287p ์์
ย
ย
**์ก์
๊ณผ ๋ฆฌ์คํฐ๋ ์ฒด์ธ**
ย
**NSApplication ์ ์ญํ **
**ย **
**๋ง์ฝ, sendAction:to:from: ์์ to:nil ์ด๋ผ๋ฉด?**
โ ย ย ย ๋ฆฌ์คํฐ๋ ์ฒด์ธ์ ์ฌ์ฉํ์ฌ, ์ด๋ ๊ฐ์ฒด๊ฐ ์ฒ๋ฆฌํ ์ ์๋์ง๊ฒ์ํ ์ ๋ฌ.
โ ย ย ย ํ์ฌ ์ปจํ
์คํธ์ ๋ฏผ๊ฐํ๊ฒ ๋๋์
.
โ ย ย ย ๋ฆฌ์คํฐ๋ ์ฒด์ธ์ค ์ ์ผ ๋จผ์ ์์ ๊ฐ๋ฅํ ๊ฐ์ฒด(firstResponder)์๊ฒ์ก์
๋ฉ์์ง ์ ๋ฌ
โ ย ย ย ๋ง์ฝ, ์์ ๊ฐ๋ฅํ ๊ฐ์ฒด๊ฐ ์๋ค๋ฉด ๋นํ์์ ๋
ย
*** ์ฝ์ฝ์์ ์๋๋ฉ๋ด ํญ๋ชฉ/์ปจํธ๋กค ๊ฒ์ฆ๊ธฐ๋ฅ**
ย
โ ย ย ย ์ก์ ๊ฐ์ฒด๊ฐ ํ์ฑํ๋์ด ์๋์ง๋ฅผ ์ฒดํฌํจ.
โ ย ย ย ๋์ผํ ๋ฆฌ์คํฐ๋ ์ฒด์ธ ์ฌ์ฉ
โ ย ย ย ๋ง์ฝ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๊ฐ์ฒด๊ฐ ์๋ค๋ฉด,ย
ย ย ย ย ์ด๋ฏธ๊ฐ์ฒด๋ฅผ ๋น ํ์ฑํ ์ํค๊ณ , ์ก์
๋ฉ์์ง๋ฅผ ๋ณด๋ผ์ ์๋๋ก ์ฐจ๋จํ๋ค.
ย
โ ย ย ย ๋ชจ๋ ํด๋์ค๊ฐ ์ ๊ณตํ๋ action์ ์๋์ผ๋ก ์ฐพ์์์ธํฐํ์ด์ค ๋น๋์์ ์ฌ์ฉํ ์ ์๋๋ก ์ ๊ณต ํ๋ค.
โ ย ย ย IBAction ์ ์ฒ๋ฆฌ ๋งคํฌ๋ก , void ํ์๋ก ๋ณํ๋จ.
โ ย ย ย ํ๋ผ๋ฏธํฐ๊ฐ ๊ผญ id ํ์ผ ํ์๋ ์์.
ย
โ ย ย ย (IBAction)volumeSliderDidChange:(NSSilder*) sender
ย
**ย **
**์ฝ์ฝ์ ์ฌ์ฉ ์์ **
**ย ย ย ย ย ย ย ย ย ย **
**์์๋ /ํ๊น/์ก์
๊ณผ MVC ํจํด**
ย
โ ย ย ย ์ค์ง View ์ Controller์์ฐ๊ฒฐ๋์ด ์์.
โ ย ย ย ๋ชจ๋ธ ์๋ธ ์์คํ
์ ย ์ฐ๊ด์ฑ์ด ๊ฑฐ์ ์์.
ย
โ ย ย ๋ทฐ์ ํน์ ์ธํฐํ์ด์ค ๊ฐ์ฒด์ ๋ํ ์ก์
์ Controller์์์ฒ๋ฆฌํ๋๋ก ์ก์
๋ฉ์๋๋ฅผ ์ง์ ํ๊ณ , ํด๋น ย
ย ย ย ย Controller์ ์ก์
๋ฉ์๋์์๋ ์์ ๋
๋ฆฝ์ ์ธ ๋ชจ๋ธ ์์คํ
์ ํตํด์์์
์ ์ํํ๋ค.
ย
ย
**ํจํด ์ฌ์ฉ ๊ฒฐ๊ณผ**
ย
โ ย ย ย ๊ธฐ์กด์ ์๋์ ์ธ ์ด๋ฒคํธ ํธ๋๋ด ๊ธฐ๋ฐ์ ์์คํ
์ ๋์ฒด์ ์ญํ
โ ย ย ย ๊ณ ์ ํ ID๋ก ๊ด๋ฆฌํ ๊ฒฝ์ฐ์ ๋น ํจ์จ์ ์ธ ๋ถ๋ถ์ด ์๋ค.
โ ย ย ย ์ ์ฐ์ฑ์ด ์ฆ๊ฐ.
โ ย ย ย ์ธํฐํ์ด์ค ์ค๊ณ๋ฅผ ๊ทธ๋ํฝ์ผ๋ก ๊ฐ๋ฅ
โ ย ย ย ์ธํฐํ์ด์ค์ ย ์ฝ๋ ์ฐ๊ฒฐ์ ์ํ ์ถ๊ฐ ์ฝ๋๊ฐ ํ์ ์๋ค.
โ ย ย ย ์๋ธ ํด๋์ค๋ฅผ ์์ฑํ์ฌ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๊ฑฐ์ ์๋ค.ย
ย ย ย ย ๋๋ฌธ์์์กด์ฑ์ด ์ค์ด๋ค๊ณ ์ ์ง/๊ด๋ฆฌ ํด์ผํ๋ ์ฝ๋์ ๋ถ๋์ด ์ค์ด ๋ ๋ค.
#Action
#cocoa design pattern
#dev
#IOS
#iPhone dev
#outlet
#Target
#Xcode
#์์๋
#์์ดํฐ ๊ฐ๋ฐ
#์ก์
#ํ๊น