Reactivecocoa: Apple์€ MapKit์— ์—ฐ๊ฒฐํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋นŒ๋“œ๋ฅผ ๊ฑฐ๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 09์›” 24์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ReactiveCocoa/ReactiveCocoa

์•ฑ์ด 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์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ๋กœ ์ด ๊ธฐ๋Šฅ์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š” ํ•œ ์ž๊ฒฉ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‰ฌ์šด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์†”๋ฃจ์…˜๊ณผ ๊ด€๋ จํ•˜์—ฌ MapKit์„ ReactiveMapKit์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ํ™•์‹คํžˆ ๊น”๋”ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด ๊ธธ์„ ๊ฐˆ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์•„๋งˆ๋„ CocoaPods ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ํ•˜์œ„ ์‚ฌ์–‘์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  5 ๋Œ“๊ธ€

์‰ฌ์šด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

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 ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ํ•˜์œ„ ์‚ฌ์–‘์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ–ฅํ›„ ์—…๋ฐ์ดํŠธ์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ•˜์ง€๋งŒ ์ด์ œ ๊ฒ€ํ† ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์• ํ”Œ์€ ์ €๋ฅผ ์‚ด๋ ค์คฌ์ง€๋งŒ ๋‹ค์Œ ๋ฒˆ์—๋Š” ์ฒ˜๋ฒŒ์ด ๋ถˆ๊ฐ€ํ”ผํ•˜๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ฒŒ๋˜์–ด ๊ธฐ๋ป. ์ด๋ฅผ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์ถ”์ง„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

mdiep picture mdiep  ยท  5์ฝ”๋ฉ˜ํŠธ

gabro picture gabro  ยท  5์ฝ”๋ฉ˜ํŠธ

toddbluhm picture toddbluhm  ยท  5์ฝ”๋ฉ˜ํŠธ

simonxcheng picture simonxcheng  ยท  6์ฝ”๋ฉ˜ํŠธ

v-silin picture v-silin  ยท  4์ฝ”๋ฉ˜ํŠธ