오늘의 주제

1. 메소드 선언하고 구현하기 
2. 메소드 인자 전달하기 

3. 반환값(return값)에 대해 알기 



여덟번째 시간입니다.^^
정말 오랜만의 포스팅입니다...ㅋ
오늘은 제 동생의 생일이랍니다!!!
뭐... 그렇다구요 ㅋㅋㅋㅋㅋㅋ

지난 번에는 이름짓기에 대해 조금 알아보았습니다.
처음부터 이름을 잘 짓는 습관이 필요합니다.
귀찮다고 a, b, c 이런식으로 이름 지어놓으면 같이 일하는 동료는 물론 자신 스스로도 하루만 지나도 코드를 읽을 수 없습니다...ㅋㅋ

자 그럼 잔소리 생략하고 설명 들어갑니다~

참..! 이거 보시기 전에 지난 포스트 2012/02/05 - [Objective-C] - Objective C <6>. 클래스와 객체(인스턴스)<2> 를 보고오시기를 추천드립니다^^
스따뚜~~~~~~~~~~~~


# 메소드의 모든 것

지난번에 쓰던 FirstProject를 계속 사용하도록 하겠습니다.
물론 없으신 분들은 매우 간단하므로 클래스 하나만 만들어 주시고 네모 박스 친 코드들만 다시 작성하셔도 무방합니다^^.
MyFirstClass에 인스턴스 메소드 세개를 만들어 줍니다.


자 이렇게 선언을 하는 것입니다.
 -(NSInteger) addTwoIntegerWithFirstInt:(NSInteger)firstInteger secondInt:(NSInteger)secondInteger;
메소드 기준으로 설명하겠습니다.

메소드 맨 앞의 - 는 이것이 인스턴스 메소드 라는 것을 말해주는 것입니다.
처음 괄호 안의 자료형은 이 메소드의 반환값(리턴값)의 자료형을 의미합니다. 이 메소드의 반환값은 NSInteger 자료형을 가지고 있군요. 자세한 설명은 아래에서 하겠습니다.
그 다음에 오는 것은 이 메소드의 이름입니다. 이 메소드의 이름은 addTwoIntegerWithFirstInt 입니다. 정확히 말하자면 addTwoIntegerWithFirstInt: secondInt: 입니다.
그리고 땡땡이 뒤에 오는 녀석들은 이 메소드에 들어가는 인자의 자료형과 이름을 뜻합니다. NSInteger자료형을 갖는 firstInteger와 secondInteger라는 이름을 가진 두 개의 인자가 전달되어 들어오네요. 이 역시 자세한 설명은 요 아래.

자, 그럼 반환값과 인자가 무엇이냐?

우리가 밥을 먹는다고 생각해 봅시다. 밥도 먹고 국도 먹고 반찬도 먹습니다. 이것을 인자라고 생각합니다.
그리고 우리는 뱃속의 여러 장기들에서 이 음식들을 소화하고 분해하고 찌꺼기는 분류해서 대변(똥ㅋㅋㅋㅋㅋㅋㅋㅋㅋ)으로 변환하여 배출합니다.

조금 감이 오시나요?
메소드는 어떤 특정한 일을 하는 마술상자 같다고 표현합니다.
여러 인자들을 받아들여서 이것을 메소드 고유의 특정한 방법을 거치고 가공하여 다시 뱉어냅니다. 이것이 메소드의 역할입니다.

그래서 받아들이는 값들을 인자값, 그리고 뱉어내는 값들이 반환값입니다.

하지만, 사람과는 약간 다르게 메소드라는 녀석은 먹지 않고도 뱉어낼 수 있고, 먹어도 뱉어내지 않을 수도 있습니다.
인자값이 없는 메소드도 있고, 리턴값이 없는 메소드도 있다는 말이죠..^^
또, 먹지도 뱉지도 않는 메소드들도 있습니다.

먹는게 없는 메소드는 인자가 없구요, 뱉는게 없는 메소드는 반환값 자료형의 종류가 void로 표기되어 있습니다.

이런 저런 메소드들을 보다보면 자연스레 알게되실거예요~

자, 그럼 본격적으로 메소드 구현을 해 봅시다.
헤더에서 정의해준 모양을 따와서 구현파일(.m)에서 구현합니다~


어...? 근데 이렇게만 해놓으니 왼쪽에 노란 삼각형 알림이 뜹니다.
눌러보면 이 메소드는 반환값이 있어야 한다고 친절히도 알려줍니다.
그렇습니다. 반환값이 명시된 메소드는 꼭 반환(똥을 싸야...)한다는 뜻입니다~ㅋㅋ
하지만 맨 아래 printFoo라는 메소드는 먹지도 뱉지도 않는 녀석이기 때문에 알림이 뜨지 않네요~^^

그럼 이쁘게 메소드를 구현해 볼까요?
자세한 설명은 주석에 있으니 잘 읽어보세요^^



자 클래스에 메소드를 구현했으니 이제 main에서 써봅시다~
자세한 설명은 주석에 써져 있습니다..^^


짠~ 결과화면 입니다.


여러분들의 예상과 맞았나요?
맨 마지막의 printFoo 메소드는, 제가 귀찮거나 깜빡했거나 해서 해보지 않은 것이 아니라 여러분들을 위해 남겨 놓았습니다.ㅋㅋㅋ
(양심이 있다면 이런소리 못하지..ㅋㅋㅋㅋㅋㅋㅋㅋㅋ)

여튼, 한 번 printFoo 메소드도 호출하여 결과를 보시기 바랍니다~

이상 메소드에 대해서 알아봤습니다~!

또 뭘 하면 좋을까요?ㅎㅎ



by yagom

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기   

↓↓↓저 열심히 썼는데 추천 한방 꾹 눌러주고 가시는 건 어떨까요? ^~^ 사랑합니다~ ↓↓↓
Posted by yagom

댓글을 달아 주세요

  1. 초코찌찌 2012.03.25 16:37  댓글주소  수정/삭제  댓글쓰기

    다음 강좌는 없나요 ? ㅠㅠ

    상속과 관련된 부분이라던지..오버로딩이라던지... 예외처리라던지 ..

    다른 사이트는 봐도 뭔말인지 모르겠던데 여기 블로그는 쉽게 설명해줘서 머리에 쏙쏙 들어오네요

    • Favicon of https://blog.yagom.net BlogIcon yagom 2012.03.26 09:26 신고  댓글주소  수정/삭제

      Objective-C에 대한 내용을 요즘 못하고 있었네요~ㅠ_ㅠ

      필요하신 부분 최대한 빨리 준비하도록 하겠습니다~!

      좋은 댓글 정말 감사드립니다!

      먼저 필요하신 부분이 있다면 상세히 말씀해 주세요~

      부족한 부분이 있다면 말씀도 해 주시구요..ㅎㅎ

      괜찮다 싶으시면 다른곳이나 다른사람들에게 소개도 해주세요ㅋㅋㅋㅋㅋ

      그리고 강좌라고 말씀해 주시니 부끄럽습니다..^^;

      저는 제 포스팅을 감히 강좌라고 생각해 본적이 없어요..ㅋ

      그냥 지식을 공유하며 같이 공부 할 뿐이죠^^

      도움이 되신다면 그것만으로 행복합니다~

      감사합니다^^

  2. GuruKuru 2012.04.16 12:32  댓글주소  수정/삭제  댓글쓰기

    잘보고있습니다! ^^

  3. 네모누리 2012.07.17 10:52  댓글주소  수정/삭제  댓글쓰기

    유용한 강의 감사합니다
    많은 도움이 되고 있어요

  4. poku 2012.08.23 15:34  댓글주소  수정/삭제  댓글쓰기

    잘보았습니다.. 똥이 조금 거슬렸지만..ㅎㅎ;

    근데 리턴값이 2개 이상인 경우는 어떻게 선어해야 하나요?

    • Favicon of https://blog.yagom.net BlogIcon yagom 2012.08.23 16:44 신고  댓글주소  수정/삭제

      안녕하세요 poku님~!
      찾아주셔서 고맙습니다 ㅎ

      리턴값은 1개 밖에 돌려줄 수 없습니다.

      그래서 NSDictionary등의 객체를 사용하여 여러 정보들을 묶어서 반환해 줄 수 있죠.
      아니면 C스타일로 포인터를 사용하여 인자를 넘겨서 값을 변경해 줄 수 있습니다.

      설명이 너무 어렵죠...ㅎㅎㅎ
      계속 보다가 NSDictionary쪽 포스팅을 보면 좀 더 감이 오실지도 모르겠네요^^;

  5. chosamong 2012.08.25 17:01  댓글주소  수정/삭제  댓글쓰기

    보면 볼수록 갈길이 멀구나 하는 생각이 드니.... OTL

    따라가다 보면 좀 감 잡힐 날이 오겠죠 ??

    감사 인사 꾸벅<(__)>

  6. hyung 2012.11.19 13:03  댓글주소  수정/삭제  댓글쓰기

    우호우호.. 이런식으로 쓰는 거였군요 ㅠㅠ

  7. 첼로와짜짜 2012.11.26 18:25  댓글주소  수정/삭제  댓글쓰기

    아니 어떻게 비싼 돈 주고 산 책보다 이게 더 잘 이해가되죠? 왜죠?

    진짜 책 던져 버리고 싶네요. 두권 다 번역본 샀는데 주식도 모르는 사람한테 주식으로 코드짜는거 알려주질 않나.

    너무 설명도 부족하고 완전 이해불가했었는데 단 몇페이지 정도로 이렇게 이해가 잘되게 써주시다니

    곰님 책 내시면 진짜 많은 초보들이 도움이 많이될거같네요. 정말 감사합니다. 업데이트좀 해주세요 T^T

    • Favicon of https://blog.yagom.net BlogIcon yagom 2012.11.26 18:37 신고  댓글주소  수정/삭제

      이해가 쉬운만큼 빠진부분과 부족한 부분도 많다는 뜻이겠죠?ㅎ
      여기에 없는 많은 내용들은 기초가 되고 난 후 찬찬히 알아가시면 좋을 것 같습니다.
      아무리 안좋은 책이라 하더라도 다른 책에서 볼 수 없는 내용들이 있는 법이니까요^^*

  8. yaHanGom 2013.01.26 19:54  댓글주소  수정/삭제  댓글쓰기

    안녕하세요-^^
    작년에 이맘때쯤 아이폰 공부하다 설명이 너무 어렵고 문법도 너무 와닿지 않아서
    책 덮었다가 다시 시작해 볼까 하고 시작하게 되어
    이 곳에 머무르게 되었습니다.^^

    참 설명이 좋네요-
    변수명과 메소드명, 인자값명 등등이 더 쉽게 되어있다면
    더 좋지 않았을까 하는 생각도 듭니다.
    물론 이해를 돕기위해 쉽게 해놓은 것이다. 이런식으로 하는 것을 권장합니다..
    라고 정리하여 마지막에 보여주어야겠죠 ㅎㅎ

    ㅎㅎ 제 괜함 바램을 주저리 써버렸네요.

    어쨌든 너무너무 감사하게 잘 보고 있습니다. 볼 때마다 view on 도 꾹꾹 누르고 있구요^^

    • Favicon of https://blog.yagom.net BlogIcon yagom 2013.01.26 20:50 신고  댓글주소  수정/삭제

      안녕하세요 :)

      이렇게 찾아주시고 좋은 덧글도 남겨주셔서 정말 고맙습니다 ^^*

      좋은 의견 주셔서 정말 고맙습니다 ㅎ

      자주자주 찾아주세요~ㅎ

      p.s. 저는 야한곰은 아닙니다...ㅎㅎ 왠지 괜시리 찔리(?)네요 ㅋㅋㅋ

      많이들 오해하시는 부분이라...+_+ㅎ

  9. 파워팰리스 2013.03.06 15:52  댓글주소  수정/삭제  댓글쓰기

    야곰님 강의는 정말 맛깔스럽고 맛좋아서,,, 머리 눈에 확확들어오네요,,
    매번 감사합니다.
    좋은 하루 되세요 ^^

  10. thanks 2014.03.14 16:18  댓글주소  수정/삭제  댓글쓰기

    잘 보고 배우고 있습니다. 감사합니다.