์ฑ์ด MapKit ํ๋ ์์ํฌ์ ์ฐ๊ฒฐ๋์ง๋ง ์ง๋ ๊ธฐ๋ฅ์ด ํฌํจ๋์ง ์์ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ์ฑ์ ์ง๋ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ ํด๊ฒฐ ์ผํฐ์์ ์ด ๋ฉ์์ง์ ์๋ตํ์ฌ ์ฑ ๋ด์์ ์ฐพ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋จ๊ณ๋ฅผ ์๋ ค์ฃผ์ธ์.
์ง๋๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ ค๋ฉด MapKit ํ๋ ์์ํฌ์ ์ฐ๊ฒฐ์ ํด์ ํ์ธ์. ์ง๋๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด "com.apple.developer.maps" ์๊ฒฉ์ ์ถ๊ฐํ๊ณ ๊ฒํ ๋ฅผ ์ํด ์ ๋ฐ์ดํธ๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ ์ถํ์ธ์.
MapKit ํ๋ ์์ํฌ์ ๋ํด ๋งํฌํ๋ ํ์ฌ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํ์ฌ ํ๋ ์์ํฌ ์ ๊ณต์ ์ฒด์ ์ฐ๋ฝํ์ฌ ๋งํฌ ํด์ ์ ๋ํ ๋์์ ๋ฐ์ ์ ์์ต๋๋ค.
์ด์ด ์ข์ ํ๋ ์์ํฌ๋ 2016๋ ๋ถํฐ ์ฌ์ฉํ ์ ์๋ MapKit ํ์ฅ ๊ธฐ๋ฅ์ด ์๋ ReactiveCocoa์ ๋๋ค... โน๏ธ
otool -L ReactiveCocoa.framework/ReactiveCocoa;
ReactiveCocoa.framework/ReactiveCocoa:
@rpath/ReactiveCocoa.framework/ReactiveCocoa (compatibility version 1.0.0, current version 1.0.0)
@rpath/ReactiveSwift.framework/ReactiveSwift (compatibility version 1.0.0, current version 1.0.0)
@rpath/Result.framework/Versions/A/Result (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1349.63.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.50.2)
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1504.82.104)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1349.64.0)
@rpath/libswiftAppKit.dylib (compatibility version 1.0.0, current version 802.0.53)
@rpath/libswiftCore.dylib (compatibility version 1.0.0, current version 802.0.53)
@rpath/libswiftCoreData.dylib (compatibility version 1.0.0, current version 802.0.53)
@rpath/libswiftCoreGraphics.dylib (compatibility version 1.0.0, current version 802.0.53)
@rpath/libswiftCoreImage.dylib (compatibility version 1.0.0, current version 802.0.53)
@rpath/libswiftCoreLocation.dylib (compatibility version 1.0.0, current version 802.0.53)
@rpath/libswiftDarwin.dylib (compatibility version 1.0.0, current version 802.0.53)
@rpath/libswiftDispatch.dylib (compatibility version 1.0.0, current version 802.0.53)
@rpath/libswiftFoundation.dylib (compatibility version 1.0.0, current version 802.0.53)
@rpath/libswiftIOKit.dylib (compatibility version 1.0.0, current version 802.0.53)
@rpath/libswiftMapKit.dylib (compatibility version 1.0.0, current version 802.0.53)
@rpath/libswiftObjectiveC.dylib (compatibility version 1.0.0, current version 802.0.53)
@rpath/libswiftQuartzCore.dylib (compatibility version 1.0.0, current version 802.0.53)
@rpath/libswiftXPC.dylib (compatibility version 1.0.0, current version 802.0.53)
์ด๋ค ์ด์ ๋ก ์ด ๋ฌธ์ ๋ ์ด์ ์ ํ๋๊ทธ๊ฐ ์ง์ ๋์ง ์์์ต๋๋ค. ์ํฉ์ ์ค๋ช ํ๊ณ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ง๋ง ํฉ๋ฒ์ ์ธ ๊ฒฝ์ฐ์ฒ๋ผ ๋ณด์ ๋๋ค. ์ฑ์๋ MapKit์ด ํ์ํ์ง ์์ผ๋ฉฐ ์ฌ์ฉ์๊ฐ ์ค์ ๋ก ์ด ๊ธฐ๋ฅ์ ํ์๋ก ํ์ง ์๋ ํ ์๊ฒฉ์ด ํ์ํ์ง ์์ต๋๋ค. ์ฌ์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์ฌ์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
MKMapView.swift
AFAICR์ ํฌํจ๋ MapKit ๋ฐ์ธ๋ฉ ์์ด RAC๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. MapKit๊ณผ ์ฐ๊ฒฐ๋๋ ๋ค๋ฅธ ๋น๋ ์ค์ ์ด๋ ์ฅ์๊ฐ ์์ต๋๋ค.
CocoaPods๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ด ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๊ณ์ ๊ฐ๋ฆฌํค๋ฉด์ ํด๋น ํ์ผ์ ์ ์ธํ๋๋ก podspec์ ๋ณต์ ํ ์ ์์ต๋๋ค.
๋ถ๋ช ํ Apple์ด ๊ท์น์ ๊ฐํํ๋ค๋ฉด ์ด๋ฌํ ๋ฐ์ธ๋ฉ์ ๋ณ๋๋ก ์ ๊ณตํด์ผ ํ ๊ฒ์ ๋๋ค. Swift ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ๊ฐ ์๋ํ๋ ๋ฐฉ์์ ๊ณ ๋ คํ ๋ ์ ํ๋ ์์ํฌ ๋์ ๋๋ ํ์ ์ฌ์ ์์ด๋ ์ด๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์, MKMapView.swift
์ด ์ข
์์ฑ์ ๋ฃจํธ์ธ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค. ํ์คํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด์ง๋ง Carthage์์ ์ข
์์ฑ์ด ์
๋ฐ์ดํธ๋ ๋๋ง๋ค ์ํํด์ผ ํ๋ฏ๋ก ๋ฌธ์ ๊ฐ ์์ ํ ์๋ก์ด ์์ค์ผ๋ก ํฅ์๋ฉ๋๋ค. ์ด์จ๋ ์ด๋ฒ ์ฌํ์ ๋ํด ์ ํ ๋ฆฌ๋ทฐํ์ ์๊ฐ์ ์ด๋จ์ง ์ง์ผ๋ด์ผ๊ฒ ์ต๋๋ค.
์๋ฃจ์
๊ณผ ๊ด๋ จํ์ฌ MapKit์ ReactiveMapKit์ผ๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ ํ์คํ ๊น๋ํ ์ ๊ทผ ๋ฐฉ์์
๋๋ค. ๋๋ ํ๊ฒฝ์์ ๊ฐ์ ธ์จ MAPKIT
์ปดํ์ผ๋ฌ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๊ณ ์กฐ๊ฑด๋ถ ์ปดํ์ผ ๋ฌธ์์ ์ ์ฒด ํ์ฅ์ ๋ํํ ์ ์์ต๋๋ค. ์นด๋ฅดํ๊ณ ์์ ์ด๊ฒ์ ์๋ํ์ง๋ง ํจ๊ณผ๊ฐ ์์์ง๋ง ์ด๊ฒ์ ๋ฏธํ์ ๋ค์๊ณผ ๊ฐ์ ์ง๋ฌธ์ ์ ๊ธฐํฉ๋๋ค.
ianbytchek<strong i="9">@ibmbp</strong>:dependency$ carthage build reactivecocoa --platform mac
ianbytchek<strong i="10">@ibmbp</strong>:Mac$ otool -L ReactiveCocoa.framework/ReactiveCocoa
ReactiveCocoa.framework/ReactiveCocoa:
โฆ
@rpath/libswiftIOKit.dylib (compatibility version 1.0.0, current version 802.0.53)
@rpath/libswiftObjectiveC.dylib (compatibility version 1.0.0, current version 802.0.53)
โฆ
ianbytchek<strong i="11">@ibmbp</strong>:dependency$ RC_SWIFT_FLAGS="-DMAPKIT" carthage build reactivecocoa --platform mac
ianbytchek<strong i="12">@ibmbp</strong>:Mac$ otool -L ReactiveCocoa.framework/ReactiveCocoa
ReactiveCocoa.framework/ReactiveCocoa:
โฆ
@rpath/libswiftIOKit.dylib (compatibility version 1.0.0, current version 802.0.53)
@rpath/libswiftMapKit.dylib (compatibility version 1.0.0, current version 802.0.53)
@rpath/libswiftObjectiveC.dylib (compatibility version 1.0.0, current version 802.0.53)
โฆ
์๋ฃจ์ ๊ณผ ๊ด๋ จํ์ฌ MapKit์ ReactiveMapKit์ผ๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ ํ์คํ ๊น๋ํ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค.
๋๋ ์ฐ๋ฆฌ๊ฐ ์ด ๊ธธ์ ๊ฐ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ์๋ง๋ CocoaPods ์ฌ์ฉ์๋ฅผ ์ํ ํ์ ์ฌ์์ผ ๊ฒ์ ๋๋ค.
ํฅํ ์ ๋ฐ์ดํธ์์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ด ์ ์ ํ์ง๋ง ์ด์ ๊ฒํ ๋ฅผ ์งํํ๊ฒ ์ต๋๋ค.
์ ํ์ ์ ๋ฅผ ์ด๋ ค์คฌ์ง๋ง ๋ค์ ๋ฒ์๋ ์ฒ๋ฒ์ด ๋ถ๊ฐํผํ๋ค๊ณ ๋งํ์ต๋๋ค.
์๊ฒ๋์ด ๊ธฐ๋ป. ์ด๋ฅผ ์ต๋ํ ๋นจ๋ฆฌ ์ถ์งํ ๊ฒ์ ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ์ฐ๋ฆฌ๊ฐ ์ด ๊ธธ์ ๊ฐ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ์๋ง๋ CocoaPods ์ฌ์ฉ์๋ฅผ ์ํ ํ์ ์ฌ์์ผ ๊ฒ์ ๋๋ค.