Method(instance method & static method)

๋ผ๋ฌดยท2023๋…„ 8์›” 9์ผ

๋ฉ”์„œ๋“œ๋ž€?

๐Ÿ’ก ํด๋ž˜์Šค , ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜• ์†์— ํฌํ•จ๋˜์–ด์žˆ๋Š” ํ•จ์ˆ˜

๋ฉ”์„œ๋“œ์˜ ์ข…๋ฅ˜

์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ(instance method)

์ •์˜

  • ์ธ์Šคํ„ด์Šค์™€ ๊ด€๋ จ๋œ ๋ฉ”์„œ๋“œ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด์•ผ๋งŒ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค
  • ์ฆ‰, ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์•ผ๋งŒ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค
  • ์ง€๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ๊ฐ€ ํ˜ธ์ถœํ•œ ์ฆ‰, ์•„๋ฌด๋Ÿฐ ์ˆ˜์‹์–ด ์—†์ด func์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋Š” ๋ชจ๋‘ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ์ด๋‹ค

์˜ˆ์‹œ

  • sayHi ๋ฉ”์„œ๋“œ ์ฒ˜๋Ÿผ ์•„๋ฌด๋Ÿฐ ์ˆ˜์‹์ด ์—†๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋ผ๊ณ  ํ•œ๋‹ค
//์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ ์ƒ์„ฑ
class Ramoo {
	func sayHi() {
		print("say Hi")
	}
}

let miniRamoo: Ramoo = .init() //์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
miniRamoo.sayHi() //์ธ์Šคํ„ด์‹€ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ

์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋ฉค๋ฒ„๋ณ€์ˆ˜

  • ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋‚˜ ํ”„๋กœํผํ‹ฐ(์—ฐ์‚ฐ, ์ €์žฅ ํ”„๋กœํผํ‹ฐ)
    • ์ด๋ฏธ ์ธ์Šคํ„ด์Šค ์ฆ‰, ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ”์œผ๋ฏ€๋กœ ๋‹น์—ฐํžˆ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค
  • ํƒ€์ž… ๋ฉ”์„œ๋“œ๋‚˜ ํ”„๋กœํผํ‹ฐ
    • ํƒ€์ž… ๋ฉค๋ฒ„๋„ ํƒ€์ž…๋งŒ ์•Œ๋ฉด ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค

ํƒ€์ž… ๋ฉ”์„œ๋“œ(type method)

์ •์˜

  • ํƒ€์ž… ํ”„๋กœํผํ‹ฐ์™€ ๊ฐ™์ด ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์— ์ƒ๊ด€์—†์ด type๊ณผ ๊ด€๋ จ๋œ ๋ฉ”์„œ๋“œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค
  • type์ด๋ฆ„๋งŒ ์•Œ๋ฉด ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค
  • ๋ฉ”์„œ๋“œ ์„ ์–ธ ์‹œ func์•ž์— staticํ˜น์€ classํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™์ธ๋‹ค
    • static func๊ณผ class func์˜ ์ฐจ์ด
      • ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๊ฐ€๋Šฅ์˜ ์—ฌ๋ถ€

      • static โ†’ ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๊ธˆ์ง€

      • class โ†’ ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ—ˆ์šฉ

        static func & class func

์˜ˆ์‹œ

  • sayHello์™€ sayBye๋Š” ๋ชจ๋‘ ํƒ€์ž…๋ฉ”์„œ๋“œ ์ด๋‹ค
//ํด๋ž˜์Šค ์„ ์–ธ
class Ramoo {
	static func sayHello() {
		print("hello")
	}
	class func sayBye() P
		print("bye")
	}
}

//๋ฉ”์„œ๋“œ ํ˜ธ์ถœ -> ํƒ€์ž…๋ฉ”์„œ๋“œ์•„๋ฏ€๋กœ ํด๋ž˜์Šค ์ƒ์„ฑ ํ•„์š”์—†์Œ
ramoo.sayHello()
ramoo.sayBye()

์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ํ”„๋กœํผํ‹ฐ(๋ฉค๋ฒ„ ๋ณ€์ˆ˜)

  • ์ €์žฅ ํƒ€์ž… ํ”„๋กœํผํ‹ฐ, ์—ฐ์‚ฐ ํƒ€์ž… ํ”„๋กœํผํ‹ฐ ๋“ฑ ํƒ€์ž… ํ”„๋กœํผํ‹ฐ๋งŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค
    • ์ฆ‰, ๊ฐ™์€ ํƒ€์ž… ๋ฉค๋ฒ„๋Š” ํƒ€์ž… ์ด๋ฆ„์—†์ด ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค
  • ๊ทธ ์™ธ์˜ ์ผ๋ฐ˜ ์ €์žฅ ํ”„๋กœํผํ‹ฐ, ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๋Š” ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค
    • ์™œ๋ƒํ•˜๋ฉด ์ €์žฅ ํ”„๋กœํผํ‹ฐ, ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๋Š” ์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ๋กœ ์ธ์Šคํ„ด์Šค์™€ ๊ด€๋ จ๋œ ์ฆ‰, ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ”์„ ๋–„๋งŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋–„๋ฌธ

์ฐธ๊ณ  ์‚ฌ์ดํŠธ

Swift) static? class? ๋ฉ”์„œ๋“œ ์™„๋ฒฝ ์ •๋ณตํ•˜๊ธฐ

profile
ios ๊ฐœ๋ฐœ์„ ํ•˜๊ณ ์žˆ๋Š” ๋ผ๋ฌด์˜ ์‚ฌ์ ์ธ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ

0๊ฐœ์˜ ๋Œ“๊ธ€