๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ iOS/iOS

[iOS] ๋‚˜๋งŒ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋งŒ๋“ค๊ธฐ(feat. CocoaPods)

by Fomagran ๐Ÿ’ป 2021. 5. 30.
728x90
๋ฐ˜์‘ํ˜•

 

์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ์ž…๋‹ˆ๋‹ค!

 

ํ‰์†Œ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์–ธ์  ๊ฐ€ ๋‚˜๋งŒ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์จ๋ด์•ผ์ง€ํ–ˆ๋Š”๋ฐ

 

๋“œ๋””์–ด ๊ทธ๋Ÿฐ ๋‚ ์ด ์˜ค๋„ค์š”...

 

๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ์ž๊ธฐ๋งŒ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•ด๋ณด๋Š” ๊ฒƒ์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!

 

๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~


Terminal

 

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•˜์‹  ๋’ค ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜์…”์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”!

 

pod lib create ์›ํ•˜๋Š”์ด๋ฆ„

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ด 5๊ฐ€์ง€ ์งˆ๋ฌธ์ด ๋‚˜์˜ฌ๊ฑฐ์—์š”.

 

 

1. ์–ด๋–ค ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‹ˆ? iOS /macOS -> iOS

 

2. ์–ด๋–ค ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ• ๊ฑฐ๋‹ˆ? Swift/Objc -> Swift

 

3. ๋„ˆ ๋ฐ๋ชจ์•ฑ ํฌํ•จํ• ๊ฑฐ์•ผ? -> Yes

 

4. ํ…Œ์ŠคํŠธ๋Š” ๋ญ˜๋กœ ํ• ๊ฑฐ์•ผ? Quick/None -> None

 

5. ๋ทฐ ๊ธฐ๋ฐ˜์œผ๋กœ ํ…Œ์ŠคํŠธ ํ• ๊ฑฐ์•ผ? No

 

์ด๋ ‡๊ฒŒ ์ž…๋ ฅํ•˜์‹œ๋ฉด ์ƒˆ๋กœ์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ pod์— ์„ค์น˜ํ•˜๊ณ  Xcode ํ”„๋กœ์ ํŠธ๊ฐ€ ์ž๋™์œผ๋กœ ์‹คํ–‰๋ ๊ฑฐ์—์š”!


Xcode

 

Development Pods -> ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฆ„ -> ReplaceMe.Swift๋กœ ์ด๋™ํ•ด์ฃผ์„ธ์š”!

 

 

ReplaceMe.Swift ํŒŒ์ผ์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ช….swift๋กœ ํ•ด์ฃผ์„ธ์š”!

 

 

๊ทธ๋ฆฌ๊ณค ๊ฐ„๋‹จํ•˜๊ฒŒ ์ด๋ฆ„๊ณผ ํ•จ๊ป˜ ์ธ์‚ฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณผ๊ฒŒ์š”! 

 

์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‹ˆ ๋ฐ˜๋“œ์‹œ open์ด๋‚˜ public์œผ๋กœ ์ž‘์„ฑํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค!

 

import Foundation

public struct Foma {
    public static func sayHello(with name:String) {
        print("\(name)๋‹˜ ์•ˆ๋…•ํ•˜์„ธ์š”.")
    }
}

 

Example ์•ฑ์œผ๋กœ ์ด๋™ํ•ด์„œ ํ…Œ์ŠคํŠธ ํ•ด๋ณผ๊นŒ์š”? (์ฒ˜์Œ์— 5๊ฐ€์ง€ ์งˆ๋ฌธ์—์„œ ๋ฐ๋ชจ์•ฑ ๋งŒ๋“ค๊ฑฐ์•ผ?๊ฐ€ ๋ฐ”๋กœ ์ด๊ฒƒ์ž…๋‹ˆ๋‹ค.)

 

๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ด๋™ํ•ด์„œ ์ž์‹ ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ importํ•˜๊ณ  ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ด…๋‹ˆ๋‹ค.

 

 

๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋ฆ„์ด ๋œจ๋ฉด์„œ ์‹คํ–‰๋ ๊ฑฐ์—์š”.

 

 

 

 

์ด๋ ‡๊ฒŒ ์ด๋ฆ„๊ณผ ํ•จ๊ป˜ ์ž˜ ์ถœ๋ ฅ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

๊ทธ ๋‹ค์Œ์œผ๋ก  Podspec ํŒŒ์ผ๋กœ ์ด๋™ํ•ด์ฃผ์„ธ์š”!

 

 

ํŒŸ์ŠคํŽ™์€ ์•„๋ž˜์™€ ๊ฐ™์ด ํ˜•์‹์— ๋งž๊ฒŒ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”!

 

(ํŠนํžˆ s.source_files ๊ฒฝ๋กœ๋ฅผ ์ž˜ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š” ใ…œ ์ด๊ฒƒ ๋•Œ๋ฌธ์— ๋ช‡ ์‹œ๊ฐ„์€ ๊ณ ์ƒํ•œ๋“ฏ...ใ…œ)

 

Pod::Spec.new do |s|
  //์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋ฆ„
  s.name             = 'FomaPrint'
  //๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „
  s.version          = '0.1.0'
  //๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์š”์•ฝ๋‚ด์šฉ
  s.summary          = '์ด๊ฒƒ์€ ์ธ์‚ฌ๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค!'
  //๊นƒํ—ˆ๋ธŒ ์ฃผ์†Œ
  s.homepage         = 'https://github.com/fomagran/FomaPrint'
  //MIT ๋ผ์ด์„ผ์Šค
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  //๋งŒ๋“  ์‚ฌ๋žŒ ์ด๋ฆ„๊ณผ ์ฃผ์†Œ
  s.author           = { 'fomagran' => 'fomagran6@naver.com' }
  //๊นƒ ์†Œ์Šค
  s.source           = { :git => 'https://github.com/fomagran/FomaPrint.git', :tag => s.version.to_s }
  //์ตœ์†Œ ๋ฐฐํฌ ํƒ€๊ฒŸ
  s.ios.deployment_target = '9.0'
  //์†Œ์ŠคํŒŒ์ผ ๊ฒฝ๋กœ
  s.source_files = 'FomaPrint/Classes/**/*'
  //ํ˜„์žฌ swift ๋ฒ„์ „
  s.swift_versions = '5.0'

end

 

๊ทธ๋ฆฌ๊ณค git์„ ๊ด€๋ฆฌํ•˜๋Š” ํƒญ์œผ๋กœ ์ด๋™ํ•ด์„œ ์ƒˆ๋กœ์šด ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

 

 

๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ž‘ ๋˜‘๊ฐ™์ด ํ•ด์ฃผ์‹œ๊ณ  Create๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”!

 

 

์ด์ œ ๊นƒํ—ˆ๋ธŒ๋กœ ๊ฐ€์„œ ํ™•์ธํ•ด๋ณด๋ฉด ์ƒˆ๋กœ์šด ๋ ˆํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด์ ธ ์žˆ์„๊ฑฐ์—์š”!

 

(์ด๊ฑฐ ๋ณด๊ณ  ์ง„์งœ ๋ฟŒ๋“ฏํ–ˆ๋Š”๋ฐ...)

 


Terminal

 

์ด์ œ ๋‹ค์‹œ ํ„ฐ๋ฏธ๋„๋กœ ์ด๋™ํ•ด์„œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋ฐฐํฌ๋ฅผ ํ•ด๋ณผ๊นŒ์š”?

 

์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•ด .podspec ํŒŒ์ผ์— ์•„๋ฌด๋Ÿฐ ์ด์ƒ์ด ์—†๋Š”์ง€ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค.

 

pod spec lint

 

์ด๋ ‡๊ฒŒ ์‹คํ–‰ํ•˜๋ฉด ๊ฒฝ๊ณ ์™€ ์˜ค๋ฅ˜๊ฐ€ ๋œจ๋Š”๋ฐ์š”.

 

๋จผ์ € ๊ฒฝ๊ณ ๋Š” ์š”์•ฝํ•œ ๋‚ด์šฉ์ด ๋ณ„๋กœ ์˜๋ฏธ์žˆ์ง€ ์•Š๋‹ค๋ผ๋Š” ๋‚ด์šฉ์ด๊ตฌ์š”. 

(summary๋ฅผ ๊ณ ์น˜๊ธฐ ์ „์— ๋œฌ ๊ฒฝ๊ณ ์—์š”. ์œ„์—์„œ ์š”์•ฝ์„ ์ œ๋Œ€๋กœ ์“ฐ์…จ์œผ๋ฉด ์•ˆ๋œจ์‹ค๊ฑฐ์—์š”,)

 

์—๋Ÿฌ๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ์— 0.1.0 ๋ฒ„์ „ ํƒœ๊ทธ๊ฐ€ ์—†๋‹ค๋Š” ๊ฑฐ์—์š”.

 

 

Xcode๋กœ ์ด๋™ํ•ด์„œ ์œ—์ชฝ ํƒญ์˜ Source Control์—์„œ Commit์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

๊ทธ๋ฆฌ๊ณค ๋ฐ”๋€ ๋‚ด์šฉ์„ Commitํ•˜๊ณ  origin/master์— Push to remote๋ฅผ ์ปค๋ฐ‹์„ ํ‘ธ์‰ฌํ•ด์ค๋‹ˆ๋‹ค.

 

 

๊ทธ๋ฆฌ๊ณค ๊นƒํ—ˆ๋ธŒ๋กœ ๊ฐ€์„œ ํ™•์ธํ•ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ปค๋ฐ‹ํ•œ ๋‚ด์šฉ์œผ๋กœ ์—…๋ฐ์ดํŠธ ๋˜์–ด์žˆ์„๊ฑฐ์—์š”!

 

 

๊ทธ ๋‹ค์Œ ํ„ฐ๋ฏธ๋„๋กœ ์ด๋™ํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•ด์ค๋‹ˆ๋‹ค.

 

git tag ๋ฒ„์ „
git push origin ๋ฒ„์ „

 

์ด๋ ‡๊ฒŒ ํ•ด์ฃผ์‹œ๊ณ  ๋งŒ์•ฝ ์—๋Ÿฌ๋‚˜ ๊ฒฝ๊ณ ๊ฐ€ ํ•˜๋‚˜๋„ ์—†๋‹ค๋ฉด passed validation์ด ๋œฐ๊ฑฐ์—์š”!

 

(๋งŒ์•ฝ ๊ฒฝ๊ณ ๋ฅผ ๊ทธ๋ƒฅ ๋ฌด์‹œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด pod spec lint --allow-warnings๋กœ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.)

 

 

๊ทธ ๋‹ค์Œ pod์— ๋“ฑ๋ก์„ ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์ด ์ด๋ฉ”์ผ ์ฃผ์†Œ์™€ ์ด๋ฆ„์„ ์ž‘์„ฑํ•ด์ค๋‹ˆ๋‹ค.

 

pod trunk register ์ด๋ฉ”์ผ์ฃผ์†Œ ์ด๋ฆ„

 

์ด๋ฉ”์ผ ์ฃผ์†Œ๋กœ ๊ฐ€์„œ ์ž์‹ ์ด ๋งž๋Š”์ง€ ์ฒดํฌํ•ด๋‹ฌ๋ผ๊ณ  ํ• ๊ฑฐ์—์š”.

 

 

์ด๋ฉ”์ผ๋กœ ์ด๋™ํ•˜์…”์„œ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜์‹œ๋ฉด

 

 

์ฝ”์ฝ”์•„ํŒŸ ์‚ฌ์ดํŠธ๋กœ ์ด๋™๋˜๋ฉด ์…‹์—…์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๊ณ  ๋œฐ๊ฑฐ์—์š”.

 

 

๋‹ค์‹œ ํ„ฐ๋ฏธ๋„๋กœ ์ด๋™ํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•ด์ฃผ์–ด์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฝ”์ฝ”์•„ํŒŸ์— ํ‘ธ์‰ฌํ•ด์ค๋‹ˆ๋‹ค.

 

pod trunk push ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฆ„.podspec

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ถœ์‹œ๋˜์—ˆ๋‹ค๊ณ  ๋œฐ๊ฑฐ์—์š”!

 

 

๊นƒํ—ˆ๋ธŒ๋กœ ์ด๋™ํ•ด์„œ ํ™•์ธํ•ด๋ณด๋ฉด ๋ฒ„์ „๊ณผ ํ”Œ๋žซํผ ๋ผ์ด์„ผ์Šค๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ œ๋Œ€๋กœ ์ถœ์‹œ๋˜์–ด์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

 


Update

 

์ด๋ ‡๊ฒŒ ์ถœ์‹œํ•˜๊ณ  ์›ํ•˜๋Š” ์ฝ”๋“œ๋กœ ์ถ”๊ฐ€ํ•ด์ฃผ๋ ค๋ฉด ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด์ค˜์•ผ๊ฒ ์ฃ ?

 

๋‹ค์‹œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ”„๋กœ์ ํŠธ๋กœ ์ด๋™ํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

 

import Foundation

public struct Foma {
    public static func sayHello(with name:String) {
        print("\(name)๋‹˜ ์•ˆ๋…•ํ•˜์„ธ์š”.")
    }
    
    public static func sayBye(with name:String) {
        print("\(name)๋‹˜ ์•ˆ๋…•ํžˆ ๊ฐ€์„ธ์š”.")
    }
}

 

๊ทธ ๋‹ค์Œ ํŒŸ์ŠคํŽ™ ํŒŒ์ผ๋กœ ์ด๋™ํ•ด์„œ ์›ํ•˜๋Š” ๋ฒ„์ „์œผ๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.

 

s.version          = '0.1.1'

 

๋ฐ”๋€ ๋‚ด์šฉ์„ ์ปค๋ฐ‹ ํ›„ ํ‘ธ์‰ฌํ•ด์ฃผ์„ธ์š”.

 

 

๊ทธ ๋‹ค์Œ ํ„ฐ๋ฏธ๋„๋กœ ์ด๋™ํ•ด์„œ git์— ๋ฐ”๋€ tag๋ฅผ ๋‹ฌ์•„์ค๋‹ˆ๋‹ค.

 

git tag 0.1.1
git push origin 0.1.1

 

๊ทธ ๋‹ค์Œ pod trunk์— ํ‘ธ์‰ฌ๋ฅผ ํ•ด์ค๋‹ˆ๋‹ค.

 

pod trunk push

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ƒˆ๋กœ์šด ๋ฒ„์ „์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ถœ์‹œ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


Test

 

์ด์ œ ๋งŒ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณผ ํ”„๋กœ์ ํŠธ๋กœ ์ด๋™ํ•ด์ค๋‹ˆ๋‹ค.

 

Podfile์— ์ž์‹ ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.

 

pod '๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ'

 

 

ํ˜น์‹œ๋ผ๋„ ์œ„์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋–ด๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”!

 

pod '๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ', :git => '๊นƒ ์ฃผ์†Œ', :tag => '์ƒˆ๋กœ์šด ๋ฒ„์ „'

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž์‹ ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์„ค์น˜๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ด๋™ํ•ด์„œ ์ž์‹ ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ import ํ•ด์ฃผ์‹œ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฉ”์†Œ๋“œ๋“ค์„ ์‹คํ–‰์‹œํ‚ค๋ฉด

 

import UIKit
import FomaPrint

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
       
        Foma.sayHello(with: "Fomagran")
        Foma.sayBye(with: "Fomagran")
    }
}

 

์•„๋ž˜์™€ ๊ฐ™์ด ์ถœ๋ ฅ์ด ์ž˜ ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!!!

 

 

ํ˜น์‹œ 'Cannot call value of non-function type 'module<Framework>' ๋ผ๋Š” ์—๋Ÿฌ๊ฐ€ ๋œฌ๋‹ค๋ฉด 

 

 

ํ•ด๋‹น ํด๋ž˜์Šค์—์„œ Target Membership์— ํ”„๋ ˆ์ž„์›Œํฌ ์ด๋ฆ„์œผ๋กœ ๋œ ๊ฒƒ์ด ์ฒดํฌ๊ฐ€ ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•ด์ฃผ์„ธ์š”.

 

 

์•ˆ๋˜์–ด ์žˆ๋‹ค๋ฉด ์ฒดํฌํ•ด์ค๋‹ˆ๋‹ค.

 


์˜ค๋Š˜์€ ์ด๋ ‡๊ฒŒ ์ž์‹ ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‚ฌ์šฉํ•ด๋ณด์•˜๋Š”๋ฐ์š”.

 

์–ธ์  ๊ฐ€๋Š” ๊ผญ ํ•ด์•ผ์ง€..๋ฏธ๋ฃจ๋‹ค ๋ฏธ๋ฃจ๋‹ค ์ด๋ฒˆ์— ํ–ˆ๋Š”๋ฐ ์ •๋ง ๋ฟŒ๋“ฏํ•˜๋„ค์š”!

ํ˜น์‹œ๋ผ๋„ ํ‹€๋ฆฐ ์ ์ด ์žˆ๊ฑฐ๋‚˜ ๊ถ๊ธˆํ•˜์‹  ์ ์ด ์žˆ์œผ๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”!


Reference

 

์—ผ์—ผ๋‹˜ ๊ธ€์„ ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

 

์ฝ”์ฝ”์•„ํŒŸ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐฐํฌํ•˜๊ธฐ - ์•ผ๊ณฐ๋‹ท๋„ท

์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋งŒ๋“ค๊ธฐ ์ฝ”์ฝ”์•„ํŒŸ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐฐํฌํ•˜๊ธฐ ๋ฐฐํฌ์ค€๋น„ .podspec ๊ฒ€์ฆ ๋ฐฐํฌ๋ฅผ ํ•˜๊ธฐ ์ „ ๊ผญ ํ•ด์•ผํ•  ์ผ์ด […]

yagom.net

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€