오늘의 주제

1. App Design Basics


파헤치기 두 번째 입니다~^^

처음 문서 파헤치기는 어땠나요?
좀 허접..아니 많이 허접하고... 이거 왜 쓰나 싶기도 하죠?

네... 뭐 ... 일단 해보고 보는겁니다 ㅎㅎ

일단 칼을 들었으면 무라도 베어봐야죠?

참...!! 

공개 수배 합니다!

함께 이 일을 해나가실 분이 있으면 좋겠습니다!!

100% 완벽 번역과 해석을 요하는 것이 아닙니다.

중요 포인트를 짚어서 반(?)번역 이라도 함께 해 주실 분을 찾습니다!

아무래도 생각보다 시간이 많이 걸리네요...

물론 원문 그대로 보는 것이 훨씬 좋겠지만, 그래도 우리나라 글로 풀어 쓴다면 조금이나마 장벽을 낮출 수 있지 않을까 싶습니다.

저를 도와주실 의향이 있으시다면 주저마시고 이메일 yagomsoft@gmail.com 또는 덧글로 말씀해 주시면 고맙겠습니다.

아니면 혼자 꿋꿋히 해보는 수밖에요...^^

자, 그럼 이제 본론으로 들어가 볼까요????



# App Design Basics


앱 디자인 기초

만약 당신이 iOS 앱 개발이 처음이라면 어디서부터 시작해야 할지 알고 싶을 것입니다. 앱을 만들이 위한 아이디어를 생각해 냈다면 앱으로 구현하기 위한 행동계획을 세워야 겠지요. 

만약 iOS 앱 개발이 처음이라면 기본 개념에 친숙해지기 위한 시간이 필요합니다. 곧바로 코드작성을 시작하고 싶다면 몇몇 튜토리얼들이 있습니다만, 기본 패턴과 개념들을 위한 시간을 조금만 투자한다면 이것이 후에 엄청난 도움이 될 것입니다.

* 제 생각과 똑같습니다...ㅎㅎㅎ

# Doing Your Initial Design


앱을 디자인 하는 방법은 여러가지가 있습니다. 그리고 코드를 작성하는 것은 대부분 좋은 접근방법이 아닙니다. 좋은 앱의 시작은 모든 기능을 상세히 설명해 놓은 것을 확장하는 것입니다. High-level의 기능들을 작성하는 것이 아이디어를 구현하는 것에 필요합니다. 사전 조사는 유저들을 당신의 목적에 얼마나 끌어들일 수 있는지 이해할 수 있게 합니다. 그리고 당신의 앱이 어떻게 생겼을지 눈에 보이도록 종이에 스케치 하십시오.

내부 디자인의 궁극적인 목표는 당신의 앱에 대한 중요한 질문의 해답입니다. 기능들과 기초 스케치는 코드를 작성하기 시작할 때 어떤 것이 필요한지 생각할 수 있게 합니다. 

물론 가장 중요한 것은 앱 내부 디자인을 하기 전에 iOS Human Interface Guidelines 를 읽어보는 것입니다. 이 문서는 내부 디자인을 할 때 사용할 수 있는 많은 전략들이 담겨있습니다. 또한 iOS 내부에서 앱이 잘 동작할 수 있도록 만드는 팁들이 담겨있습니다. 그리고 iOS Technology Overview를 읽으면 iOS의 능력과 이 능력을 사용하여 어떻게 목표를 이룰 수 있는지에 대해 이해할 수 있을 것입니다.

* 뭐... 너무나 당연하고 좋은 이야기들이라서...^^; 실전 경험이 있는 분들은 충분히 와닿고... 때로는 뼈에 사무치는 말일지도 모르겠습니다..ㅎㅎ
오역, 의역 그리고 빼놓은 부분도 종종 있습니다^^;

# Learning the Fundamental iOS Design Patterns and Techniques


핵심적인 iOS 디자인 패턴과 테크닉 배우기

어떤 앱을 만들던지 코드를 작성하기 전에 필수로 알아야 하는 디자인 패턴과 테크닉이 있습니다. iOS에서 시스템 프레임워크는 중요한 기반을 제공하고 하드웨어에 접근할 수 있는 방법이 하나뿐인 경우도 있습니다. 다시말해서, 시스템 프레임워크는 많은 세부 디자인 패턴을 사용하며 당신은 그것과 친숙해 져야한다는 말입니다. 이 디자인 패턴을 이해하는 것은 당신의 앱을 만드는 데 있어서 첫 걸음입니다.

당신이 꼭 알아야 할 중요한 디자인 패턴입니다.

Model-View-Controller - 이 디자인 패턴이 앱의 모든 구조를 관리합니다.
Delegation - 이 디자인 패턴은 객체간 정보나 자료를 전송하는데 용이합니다.
Target-action - 이 디자인 패턴은 유저의 행동을 당신의 코드에 전달하는 역할을 합니다.
Block objects - 비동기와 콜백 코드를 구현하기 위해 블럭을 사용할 수 있습니다.
Sandboxing - 모든 iOS은 시스템과 다른 앱에 의해 보호받도록 sandbox에 위치해 있습니다. 샌드박스 구조는 앱의 동작에 관여한 파일의 위치에 영향을 줍니다.

메모리 관리와 정확성은 iOS 앱에서 중요합니다. 앱은 데스크탑에 비하여 사용가능한 메모리가 적기 때문입니다. 앱은 메모리 효율을 관리하기 위하여 컴파일러의 ARC를 사용합니다. 비록 ARC가 필수는 아니지만 우리는 적극 추천하는 바입니다. ARC를 사용하지 않는다면 당신이 직접 메모리 관리를 해주어야 합니다.

* 사견이 필요없네요...;

# Translating Your Initial Design into an Action Plan


당신 안의 디자인을 행동으로 옮기기
iOS앱은 Model-View-Controller 디자인 패턴을 사용하는 것을 가정합니다. 

* 데이터 모델에 기본 접근을 선택합니다.
  @ 이미 존재하는 데이터 모델 코드 - 만약 C언어를 기반으로 한 데이터 모델 코드를 가지고 있다면 iOS앱에 직접 적용할 수 있습니다.
  @ 커스텀 객체 데이터 모델 - 커스텀 객체는 간단한 데이터의 집합입니다.
  @ 구조적 데이터 모델 - 만약 데이터가 데이터베이스를 쓸 정도로 구조적이라면 코어 데이터 또는 SQLite를 사용하면 됩니다. SQLite는 iCloud에 적용될 수 없지만 코어 데이터는 가능합니다.

* 도큐먼트를 지원할 것인지 결정하기
   도큐먼트는 유저에게 필요한 파일을 저장하는 공간으로 쓰입니다. 이 파일은 유저에 의하여 관리될 수도, 아닐 수도 있습니다. 도큐먼트를 사용하는 가장 큰 장점은 UIDocument 클래스가 iCloud와 상호작용할 수 있도록 하고 로컬 파일 시스템이 더욱 심플해 지는 것입니다. 코어데이터를 사용하여 컨텐츠를 저장하는 것과 유사한 UIManagedDocument라는 클래스가 제공됩니다.

* 유저 인터페이스에 접근하는 방법 고르기
   @ 빌딩 블럭 접근 - 유저 인터페이스를 만드는 가장 쉬운 방법은 주어진 view 객체를 이용하는 방법입니다. view는 테이블, 버튼, 텍스트 필드 등과 같은 눈에 보이는 요소들을 나타냅니다. 뷰를 있는 그대로 사용할 수 있지만, 당신이 원하는 대로 하려면 커스터마이즈를 할 수도 있습니다. 뷰를 사용하는 장점은 더 적은 코드로 복잡한 인터페이스를 빠르게 작성할 수 있고 유저에게 익숙한 인터페이스를 제공한다는 것입니다.
   @ OpenGL ES기반 접근 - 세련된 렌더링이 필요하거나 잦은 화면 업데이트가 필요하다면 컨텐츠들을 OpenGL ES를 사용하여 표현하는 것이 필요할 것입니다. 최고의 퍼포먼스를 필요로 하거나, 세련된 그래픽 또는 게임에 주로 사용됩니다.

* 사실 제가 써놓고도... 이게 무슨말인지;;; 영어를 우리말로 바꿔놓으니 영 어색하고 잘 맞지를 않네요 ㅠㅠ

# Starting the App Creation Process


앱 제작 시작하기

행동 계획을 세웠따면 코딩을 시작할 때입니다. iOS 앱 제작이 처음이라면 Xcode 내장 템플릿을 살펴보는 시간을 갖는 것이 좋습니다. 이 템플릿들은 몇 분 안에 앱을 만들어 실행 할 수 있을 정도로 간략화 되어있습니다. 마지막으로, Xcode 프로젝트를 만들 때, 당신은 다음 질문들의 대답을 마음속에 가지고 있어야 합니다.

* 기본 인터페이스 스타일은 무엇인가?
 - 다른 타입의 앱은 다른 타입의 뷰와 뷰 컨트롤러들이 필요합니다. 언제라도 인터페이스를 변경 할 수 있지만, 먼저 정하는 것이 프로젝트를 시작하기 쉽습니다.

* iPhone 또는 iPad만을 위한 앱을 만들 것인가, 아니면 둘 다를 위한 앱을 만들 것인가?
 - Universal 앱을 만드는 것은 동적으로 iPhone과 iPad를 위한 뷰와 뷰 컨트롤러들을 선택하도록 지정해 주어야 합니다. 더 많은 기기를 지원할 수 있기 때문에 Universal 앱을 만드는 것이 더 선호되지만, 각각의 플랫폼에 맞도록 코드가 가공되어야 합니다. Universal 앱이 코드작성에 미치는 영향을 알고싶다면 Creating a Universal App을 보십시오.

* 스토리보드를 사용할 것인가?
 - 스토리보드는 뷰와 그 동작을 한 번에 볼 수 있기 때문에 디자인 프로세스를 간략화 해줄 수 있습니다. 스토리보드는 iOS 5 이상에서 지원합니다. 그 미만의 버전에서 동작하게 하려면 nib 파일을 사용해야 합니다.

* 데이터 모델을 위해 코어데이터를 사용 할 것인가?
 - 코어데이터를 사용하여 얻을 수 있는 이점을 알고싶다면 Core Data Programming Guide를 참고하세요.

이 질문들을 통하여 코딩 시작을 위하여 Xcode를 사용합니다.

1. Xcode가 설치되어 있지 않다면 설치하고, iOS development team을 구성하세요. Xcode 개발환경 세팅에 대하여 자세히 알고 싶다면 Developing for the App Store를 참고하세요.

2. 첫 Xcode 프로젝트를 생성합니다.

3. 코드를 작성하기 전에 새로운 프로젝트에서 빌드와 실행을 합니다. iOS 시뮬레이터를 타켓으로 한다면 실행되는 것을 볼 수 있을 것입니다.

4. 앱 코드를 작성합니다.

5. 앱 상태변화를 지원하기 위한 기능을 추가합니다.

6. 필요한 리소스를 제작합니다.

7. 필요하다면 앱과 관련된 적절한 동작을 구현합니다.

8. 앱이 특별해지기 위한 발전된 기능을 추가합니다.

9. 기본적인 퍼포먼스 튜닝을 합니다.

10. 이것을 반복합니다.



아... 정말 이 짧은거 하는데도 시간 정말 오래 걸리네요 ㅠ_ㅠ

그냥 포스팅 몇개는 하겠네요...;;;;;;;;;

으악... 힘들어요~

이거 계속 할 수 있을런지 모르겠네요... 여러분의 도움이 절실히 필요합니다..
 
오역 번역 발번역 항상 넘칩니다... 이점 참고하시구요, 부족한 부분이 있다면 덧글 주시면 보충해 드릴게요^^;

그럼 전 이만~!


by yagom

facebook : http://fb.yagom.net

twitter : http://twitter.yagom.net ( @yagomsoft )

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

RSS Feed 받기   


↓↓↓저 열심히 썼는데 손가락 한방 꾹 눌러주고 가시는 건 어떨까요? 로그인이 필요 없습니다. ^~^ 고맙습니다~ ↓↓↓ 




Posted by yagom

댓글을 달아 주세요

  1. hyung 2012.12.05 09:22  댓글주소  수정/삭제  댓글쓰기

    ㅠㅠ 일본어였다면 제가 도와드리지만... 영어는 저두 그냥 단어하나 하나 읽기두 힘든지라..

    여튼 포스팅 잘보고 갑니다~

  2. hyung 2012.12.06 10:22  댓글주소  수정/삭제  댓글쓰기

    메모리 관리와 정확성은 ios앱에서 중요합니다. 앱은 데스크탑에 비하여 사용가능한 메모리가 적기 때문입니다. 앱은 메모리 효율을 관리하기 위해서 컴파일러의 ARC를 사용합니다. 비록 ARC가 필수는 아니지만 우리는 적극 추천하는 바입니다. ARC를 사용하지 않는다는 당신이 직접 메모리 관리를 해주어야 합니다.

    ---------------------------------------------------

    라는 부분은 정말 공감이 가면서도 어렵네요
    눈에 보이는 코드에러 같은 경우야 어떻게 잡아주면 되지만..
    메모리 같은건 뜬구름 잡는 기분 이랄 까요

    저도 요즘 만드는 카메라어플에 ARC를 적용하고 있지만
    사진을 여러장 찍거나 해버리면

    Received memory warning. Level = 1
    나오고
    Recevied memory warning. Level = 2
    가 뜨면서 어플이 죽어버리 더라구요..

    구글링해서 찾아본 해답은 IOS 버전을 올리십시오! 라는 거였지만 ㅋㅋ

    애초애 받은 단말기가 아이폰3G인지라 ㅋㅋ 올릴수도 없구.. 정말 고민고민 되네요

    여튼! 메모리 관리는 정말 중요한듯 ㅠㅠ 아무리 기능들이 잘 되도 어플이 죽어버리면 치명적이니까요 ㅠㅠ..

  3. kimsdn 2012.12.10 14:45  댓글주소  수정/삭제  댓글쓰기

    ^^ 공개모집 하셨네요 ㅎㅎ
    우선 저는 전에 말씀드린대로... 발번역이지만... 이런 저라도 괜찮으시다면 충분히 동참하겠습니다.

    메일 한번 드리겠습니다,

    화이팅입니다!!

  4. 2012.12.10 14:48  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  5. 2012.12.10 15:30  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  6. 나리 2013.05.02 14:04  댓글주소  수정/삭제  댓글쓰기

    고생이 많으세요!! 덕분에 잘 배우고 있습니다!!

  7. chosamong 2013.08.20 14:12  댓글주소  수정/삭제  댓글쓰기

    오랜 외유(? 다시 백조가 되어서... OTL)
    오랫만에 찾아왔습니다.

    절대로 혼자는 쳐다보고 싶어지지 않는 도큐먼트를 집으시는군요.

    감사합니다. <(__)>


오늘의 주제

1. Delegate 
2. Data Source



열 여덟번째 시간입니다.^^

지난 번에는 맵뷰를 간단히 만들어 보았습니다~
정말 더 필요한거 없어요?
아무도 댓글도 반응도 추천도 없습니다...
저 블로그 접을까봐요...ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

이번에는 중요한 개념중에 하나인 Delegate와 Data Source에 대하여 알아보도록 하겠습니다~

중요한 개념이므로 이해 될 때 까지~!
스따뚜~~~~~~~~~~~~


# Delegate???

Delegate. 델리게이트.
우리말로 번역하면 대리자 정도로 해석할 수 있겠네요.

말 그대로 Delegate는 누군가가 해야 할일을 대신 해주는 녀석이라고 생각하시면 됩니다. 조력자가 되겠지요.

말로만 이렇게 설명하면 잘 감이 안오시죠?

간단히 그림으로 알아봅시다.

지난 번에 만들어 보았던 맵뷰입니다.ㅋ
맵뷰는 뷰 컨트롤러 위에 올라가 있는 상태였죠~


그런데 맵뷰가 동작하는 동안 뭔가 자신이 하기 벅찬 일들을 누군가 해줬으면 합니다.
그럴때 누군가에게 자신의 상태를 파악해서 적절한 일을 해주기를 원할때 델리게이트 선언을 해 줍니다.

바로 이렇게 말이죠~


그러면 델리게이트로 선언된 객체는 자신을 델리게이트로 임명한 객체가 어떤일을 도와달라고 하면 지정된 메소드를 통하여 알아서 척척척 스스로 어린이처럼 처리해 주는겁니다 ㅎㅎㅎ
사실 이렇게 말로만 설명하면 잘 감이 안와요~_~

# Data Source???

또한, 데이터 소스라는 것은 말그대로 데이터의 근원, 원천 뭐 이런뜻인데요~
어떤 객체가 누군가의 데이터 소스로 선언이 되면 선언한 객체가 데이터를 필요로 할 때 지정된 메소드를 통하여 데이터를 넘겨주는 역할을 합니다.

바로 이렇게 되는 시츄에이션 입니다.


이렇게 개념설명만으로는 잘 모르시겠다구요?ㅎ

그럼 다음번에는 간단한 실습을 통해서 알아보도록 할게요~

I'll be back!

커밍 쑨~!

by yagom

twitter : @yagomsoft

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

RSS Feed 받기   


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

Posted by yagom

댓글을 달아 주세요

  1. chan 2012.03.30 10:50  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 감사합니다~~

    다음예제 빨리 볼수 있으면 좋겠네요~~ㅎㅎ

  2. 궁금 2012.03.30 16:25  댓글주소  수정/삭제  댓글쓰기

    UIviewcontrooler 클래스를 만들고 , 그 클래스의 .h 파일에 아웃렛을 정의하면(예를들어서 texte) .xib에서 First owner로 연결하면
    예전에는 texte 로 보였던거 같은데 이제는 delegate로 보여요, 이거 왜 이러는지 아시나요?

    • Favicon of https://blog.yagom.net BlogIcon yagom 2012.03.31 01:17 신고  댓글주소  수정/삭제

      흐음..
      UIViewController를 상속받은 클래스에 IBOutlet으로 texte를 변수로 선언해 준 후에 xib파일에서 연결할 때를 말씀하시는 건가요?
      File's Owner로 부터 출발하여 연결대상(texte)로 연결할 때 그렇게 나온다는 것은 조금 이해하기 어렵네요^^;
      혹시 반대로 끌어 오신것은 아닌지요..?
      좀 더 자세한 설명이 필요하네요^^;

  3. 인절미후후 2012.04.05 15:15  댓글주소  수정/삭제  댓글쓰기

    강좌 항상 잘 읽고 있습니다.
    여러번 더 봐야겠어요.
    아이폰 강좌는 xcode업데이트 때마다 달라지는 인터페이스 덕분에 이전 버전의 강좌로는
    초심자들에게 벽에 막히는게 많습니다.
    최신 자료를 가지고 강좌해주는 점만으로도 큰 감사함을 느끼는 바입니다. ㅎㅎ

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

      아이쿠..^^
      다른 분들도 그때는 최신이셨을 텐데..ㅎㅎ
      강좌라고 하기도 부끄러운 수준입니다^^;
      더욱 분발해 보도록 하겠습니다~!
      댓글 감사드립니다~!
      필요한 것 있으시면 말씀해 주세요~

  4. Potomac 2012.04.13 04:49  댓글주소  수정/삭제  댓글쓰기

    그냥 눈팅만 하고 있었는데 필요한걸 말하라는 바람에 용기를 내어 적어요.

    버튼에 아이폰에 저장된 사진이나 그림을 불러와서 그 사진이나 그림으로 버튼을 계속 사용하고 싶은데요.
    사진을 이동시켜서 버튼에 적당한 부분이 표시되면 더 좋겠구요.
    물론 버튼의 위치와 크기는 그대로 유지하고 싶어요.

    궁금한건 많지만 다음에 또 물어보려구요.

    감사합니다.

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

      ^^ 덧글 주셔서 고맙습니다.
      일단 이미지를 버튼이나 뷰로 불러오는 것에 대해서 조만간 포스팅 할게요~
      그런데 버튼 안에서 이미지를 원하는대로 움직이는 것은 조금 어려운 튜토리얼이 될 것 같네요..^^
      여기 블로그의 초급 수준을 조금 벗어나는 것이라, 일단 버튼에 사진을 불러오는 방법에 대해서는 먼저 포스팅 해 보도록 하겠습니다. 만약에 추후에 필요하시다면 요청하시면 예제 알려드리도록 할게요^^

  5. Potomac 2012.04.14 03:06  댓글주소  수정/삭제  댓글쓰기

    이렇게 바로 답장을 받는건 처음인것 같아요.
    개발자가 자기 사진을 넣는것 말고 아이폰 사용자가 자기 사진이나 그림을 넣는게 궁금해요.
    고마워요!

  6. Plateblack 2012.05.14 14:52  댓글주소  수정/삭제  댓글쓰기

    야곰님 강좌를 보며 Xcode로 프로그래밍을 하는데 푹 빠져있는 1인입니다^-^
    궁금한건 정말 많지만 하나만 꼽으라면... 음~
    아이폰과 데이터베이스를 연동해서 게시판을 만들어보는게 정말 궁금해요!
    웹서버 관련 지식이 너무 부족해서 어디서부터 손을 대야할지 막막하기만 하네요ㅠ

    • Favicon of https://blog.yagom.net BlogIcon yagom 2012.05.14 15:39 신고  댓글주소  수정/삭제

      ㅎㅎ.. 그정도는 지금까지 배운거로는 아직 어림없어요...ㅎ
      그래서 차근차근 해보려고 합니다~
      조금은 시간이 걸릴 것 같아요~
      물론 많은 분들이 그 부분 정말 하고 싶어 하시는 것 알고 저도 처음에 많이 하고 싶었으니까요~
      하지만... 걷기도 전에 뛸 수는 없잖아요 ㅎ
      차근차근 같이 가보도록해요~

  7. NewBie 2012.05.23 15:12  댓글주소  수정/삭제  댓글쓰기


    이 내용은 이제 슬슬 서버와 연동이 되는 부분을 가르쳐주시려고 하시는건가요? +_+ 기대가 되네요 ㅎㅎ

  8. SODA 2012.06.29 10:28  댓글주소  수정/삭제  댓글쓰기

    열혈독자입니다. 덕분에 좋은 정보 알찬 정보 많이 습득하고 있습니다.

    감사합니다.^___________^

    • Favicon of https://blog.yagom.net BlogIcon yagom 2012.06.29 11:19 신고  댓글주소  수정/삭제

      안녕하세요 SODA님~!
      오랜만에 덧글로 뵙네요 :-)
      자주자주 들러주시고 불같은 덧글 부탁드립니다 ㅎㅎ
      좋은 주말 보내시길...:-)

  9. 딴또 2013.03.11 14:53  댓글주소  수정/삭제  댓글쓰기

    정말 열심히 강의 보고 있습니다. 힘내십시오. 열심히 응원합니다.

  10. 나리 2013.05.02 09:43  댓글주소  수정/삭제  댓글쓰기

    쉽게 강의해주셔서 감사합니다^^
    많은 도움 되고 있어요!

  11. Favicon of https://pgspace.tistory.com BlogIcon 찌열남 2013.12.19 13:10 신고  댓글주소  수정/삭제  댓글쓰기

    처음으로 댓글 남깁니다.
    손가락물론 눌렀습니다 ㅎㅎㅎ
    잘보고 갑니다~

  12. 최현진 2016.05.13 09:49  댓글주소  수정/삭제  댓글쓰기

    항상 잘 보고 있습니다 ^^

  13. 진아 2016.05.25 01:08  댓글주소  수정/삭제  댓글쓰기

    늘 눈으로만 보고 갔었는데 오늘은 댓글을 남겨봅니다. 친절하고 자세한 설명이 큰 도움이 된답니다!!
    야곰 블로그 화이팅 입니당!!