Categories

아울그룹은 밤샘의 세월이 만든

“케미가 있는 웍그룹”입니다.

기술 + 문화 + 소통의 조화를 꿈꾸다.

We are in Social
20 5월
2011
Books & Stories Smart App Development iOS
1632 Views

아이폰 앱 개발 완벽 가이드

아이폰-앱개발-완벽가이드

집필하는 동안에도 세계 역사에 오래도록 기록될 만한 크고 작은 일들을 많이 목격했습니다. 거슬러 올라가면, 어제 오사마 빈라덴이 미군에 의해 사망해 이를 기뻐하는 축제 소식이 있었고, 영국에서는 윌리엄 황태자와 캐더린의 결혼식이 전 세계의 관심 속에 성대하게 치뤄졌습니다. 그리고 그 전에는 튀니지를 시작으로 아랍 세계가 장기 독재 정권에 대해 민중이 봉기하는 도미노 현상이 이어졌고, 일본에는 쓰나미로 인한 원전 사태가 있었습니다. TV, 라디오, 신문 등으로만 소식을 전해 들었던 과거에는 기자의 개인적인 관점과 언론사의 정치적 입장만으로 사건을 보고 여론이 형성되었습니다.

필자가 유년 시절에 뵜던 한 고승의 한 마디가 생각납니다. “너희들 세대는 천리안 시대다.” 전해오는 이야기 속의 도력 있는 스님들이나 초능력자만이 천리안을 가질 수 있는 것이 아니라, 누구나 앉아서 세상을 볼 수 있는 천리안 시대를 말했던 것입니다. 실제로 인터넷 세상이 열리기는 했지만 당시 생각했던 “천리안 시대”라는 개념을 충족시키기에는 부족함이 있었습니다. 천리안이든 만리안이든 하나의 관점으로만, 보여주는 대로 세상을 본다는 것은 천리안이라 하기에 부족함이 있었습니다.

스마트폰 앱이 기술적, 경제적인 관점에서 혁신적인 역사의 획을 긋고 있지만, 이에 그치지 않고 인문적인 관점에서 중동의 역사를 바꾸는 기폭제 역할을 하고 있고, 언론사가 할 수 없는 사실 보도를 일반 대중이 스마트폰으로 해내고 있습니다. 언론사의 전문기자들도 방송 장비 없이, 스마트폰을 사실적인 현장을 잡아내는 도구로 활용하고 있습니다. 개개인이 저마다 자신의 환경에서 스마트폰에 세밀하게 진실을 담아 전 세계에 알리고, 전 세계의 눈이 이를 보고 반응하는 진짜 천리안 세상이 도래했습니다.

지역국 정부는 남의 일에 관섭하지 말라는 불편한 심사이고, 세계의 눈은 국가이기 전에 인류애를 근거로 지역국 정부를 압박하며 필요에 따라서는 실질적인 조치를 취하고 있습니다. 새로운 문화를 받아 활용하는 자는 승자의 자리에 있을 수밖에 없고 그 격차는 갈수록 심해질 것입니다. 우리의 처지도 그다지 진취적인 상황이 아니라는 점이 안타깝습니다. 하지만 어느 개인의 투지나 의욕만으로 이런 상황이 개선되거나 발전적으로 변화되기는 어려울 것입니다. 스마트 세상은 넓은 시야와 넉넉한 마음으로 모두와 함께 하려는 한 기업의 제도와 분위기로 부터 시작되었습니다. 이런 환경은 한 사람의 특정 리더가 이룩했다기보다는, 구성원 한 사람 한 사람이 모두 그런 정신적 태도를 견지하는 가운데 훌륭한 리더를 만난 것이라는 관점에서, 우리 모두가 해야 할 일을 찾을 수 있을 것입니다.

pg_0023 pg_0024 pg_0025 pg_0026 pg_0027 pg_0028 pg_0029 pg_0030 pg_0031 pg_0032 pg_0033 pg_0034 pg_0035 pg_0036 pg_0037 pg_0038 pg_0039 pg_0040 pg_0041 pg_0042 pg_0043 pg_0044 pg_0045 pg_0046

[서지 정보]

저자 이두진

출판사 PCBOOK

출간일 2011년 05월 20일

정가 43,000원

쪽수 1367쪽

ISBN 9788981931360

[개요]

“안드로이드 앱 개발 완벽 가이드”에 이은 아이폰 앱 개발 가이드 북입니다.

베스트셀러로 많은 독자의 사랑을 받고 있는 전작을 통해 저자의 친절한 가이드와 실용적인 코드의 인기는 이미 증명이 되었습니다. 초보자를 위해서, 마치 그림책 보듯이 학습하도록 하는 세심한 배려와 후발 개발자들을 위해서, 개발 노하우가 담긴 실용 코드를 제시하는 저자의 노력이 아이폰에서도 그대로 재현되었습니다.

이 책은 다음과 같은 기준으로 기획, 집필되었습니다.

초보자에게는 세밀하고 탄탄한 기초를!

후발 개발자에게는 실용 코드와 개발 노하우를!

SNS, 스마트워크, 실무 활용 앱 개발!

대부분의 앱 개발 서적들이 기능별로 분류하여 사전식으로 API만을 설명하고 있어 실제 앱을 만드는 경험은 할 수가 없습니다. 앱을 만드는 작업은 API를 참조하는 것 이외도 다양한 개발 테크닉을 필요로 하기 때문에 실무에 즉시 적용할 수 있는 앱 솔루션을 확보하는 것이 중요합니다. “아이폰 앱 개발 완벽 가이드”는 바로 그런 점에 주목하여 실무에서 즉시 활용할 수 있는 다양한 앱을 구현하는 프로그래밍 기법을 설명함으로써 현업에서의 개발이나 취업에 대비할 수 있도록 했습니다.

이 책에서는 개발 툴의 설치부터 단말기와 개발자 등록 절차, 오브젝트 C, 코코아 터치까지 기본적인 지식을 습득한 후, 실무에서 필수적으로 사용되는 앱사이트, 앱보드, 회원 관리 시스템을 완벽한 코드로 구현합니다. 또한 현장에서 즉시 사진이나 동영상 촬영을 하고 글을 입력해서 서버로 전송하고, 그 콘텐츠들을 공유해서 볼 수 있는 “스마트 리포터”라는 앱을 만들면서 소셜 네트워크 구현을 위한 코드를 개발합니다. CoreData를 이용한 데이터베이스 처리와 서버 연동 등 고급 테크닉도 학습합니다.

초보자를 위해서는 기초부터 하나씩 노하우를 축적해갈 수 있도록 개념 설명과 코드 작성의 순서를 배려하였습니다. 또한 경력이 있는 개발자들은 자신이 필요한 부분만 뽑아서 활용할 수 있도록 설명 단계를 세분화했습니다. 특히 개발의 정형만을 보여주는 것이 아니라, 저자의 오랜 경험을 바탕으로 실수하거나, 간과하기 쉬운 부분들을 일일이 체크, 조언하고 있습니다. 앱 개발에 필요한 실전 코드뿐만 아니라, 개발 프로세스에 관한 저자의 경험을 그대로 전수받을 수 있다는 것이 이 책의 큰 특징의 하나입니다.

책의 설명 순서를 정하고, 코드를 짜고, 집필하기까지 아울연구소의 이두진 소장을 중심으로 3명의 연구원이 함께 열정적으로 작업했습니다.

이 책에서는 iOS 앱 개발자를 위하여 다음과 같이 5가지 테마를 제시합니다.

1부, 2부 : iOS 앱을 개발하기 위해 기본적으로 갖춰야 할 지식을 제공합니다.

iOS 개발 환경을 구축하고, Xcode로 간단한 프로젝트를 생성, 실험합니다. Mac OS X의 개발 언어인 Objective-C 언어를 살펴보고, Objective-C를 기반으로 하는 코코아 터치 프레임웍에 대해 설명합니다.

3부 : 앱에서 사이트를 만들기 위해서 필요한 기능들을 살펴봅니다.

UI를 구성하면서 각 객체 간의 연관 관계를 파악하고 다양한 디자인 요소들을 다루는 방법을 살펴봅니다. Info 메뉴 화면을 실제로 구현하면서 핵심적인 API를 사용해보고 기본 UI이외에 사용자 아이콘을 처리하는 방법과 페이지 넘김 애니메이션 효과도 살펴봅니다.

4부 : 공지사항 게시판을 앱에서 구현하는 방법을 소개합니다.

웹사이트의 게시판(Board)을 앱에서 구현한 “앱보드”를 만듭니다. 여기서 보여주는 앱보드 기술은 커뮤니케이션이라는 기본적인 목적을 구현하기 충분하도록 “NS 객체들의 기본 활용 및 형 변환“부터 ”검색을 지원하는 UISearchBar”까지 다양한 기술들을 제시합니다.

5부 : 앱으로 회원을 관리하기 위한 회원관리시스템을 만듭니다.

회원약관과 로그인/로그아웃, 회원 접근 제어, 회원정보 변경과 탈퇴 등 회원가입과 관련된 모든 작업을 구현합니다. 또한 고객센터를 만들면서 문자 서비스, 음성전화, 이메일, 웹사이트, 지도 찾기 등의 기능을 구현합니다.

6부 : 소셜 네트워크를 구현하는 핵심 테크니컬 코드를 개발합니다.

기사 취재나 여행을 하면서 현장에서 동영상이나 사진 촬영을 하고 글을 입력한 후 바로 서버로 전송하고 그 콘텐츠들을 공유하여 볼 수 있는 “스마트 리포트”라는 앱을 만듭니다. CoreData를 이용한 데이터베이스와 서버 연동 등 고급 기술을 익힙니다.

[목차]

제 1 부 iOS의 기초

[1장] 개발 환경 구축하기

1 애플 개발자 등록

2 Xcode와 iOS SDK 설치본 다운받기

3 Xcode와 iOS SDK 설치하기

자주 사용하는 응용프로그램을 독에 등록하려면

[2장] Xcode 프로젝트 생성과 실험

1 앱 프로젝트 생성

2 iPhone 가상기기에서 앱 실험

[3장] 프로젝트 소스 버전 관리

1 프로젝트 소스 버전 관리 – Snapshots

2 공동 소스 버전 관리 – Repositores

3 배포 버전 관리 – Archives

[4장] 실물 단말기에 실험하기

1 실물 단말기에 대한 인증서

2 iOS 개발 프로그램 구매

3 iOS Provisioning Portal에서 인증 과정 시작

4 WWDR(Worldwide Developer Relations) 인증서 다운받아 설치하기

5 CSR 생성 및 인증서 요청

6 개발용 단말기 등록

7 App ID에 대해서

8 Provisioning Profile 등록

9 개발용 인증서 다운받고 설치하기

10 배포 과정 살펴보기

11 등록된 개발용 단말기 연동 실험

12 실물 단말기 스크린 샷

13 실물 단말기 실험을 위한 필수 3가지 조건

[5장] iOS 응용프로그램 유형 살펴보기

1 내비게이션 앱 – Navigation-based Application

2 OpenGL 애니메이션 앱 – OpenGL ES Application

3 iPad용 분할 뷰 앱 – Split View-based Application

4 탭 바 앱 – Tab Bar Application

5 유틸 앱(회전문 효과) – Utility Application

6 뷰 앱 – View-based Application

7 윈도우 앱 – Window-based Application

제 2 부 iOS 앱 개발을 위한 기본 지식

[6장] Objective-C 기초 문법

1 클래스 작성법

2 메소드(Method) 호출 방식

3 메시징 – Messaging

4 클래스 활용 및 메모리 관리

5 프로퍼티(속성변수) – @property, @synthesize

6 NSString과 메모리 관리 – alloc, init, autorelease, retain, release

[7장] Cocoa Touch

1 Cocoa Touch의 개요

2 Cocoa의 유래

3 Foundation과 UIKit 프레임웍

4 iOS의 여러 가지 프레임웍 찾기

제 3 부 앱 사이트 만들기

[8장] 기본 소스 구성과 화면 디자인

1 프로젝트 생성

2 기본 소스 구성

3 기본 템플릿 실험하기

4 앱의 시작 클래스 소스 분석 – main.m

5 공통 헤더파일 – xxx_Prefix.pch

6 윈도우 닙(nib) 파일 – MainWindow.xib

7 닙(nib) 객체의 속성창 – Attribute Inspector

8 닙(nib)의 기본 클래스 – File’s Owner

9 닙(nib) 객체의 연결 관계 – Outlets

10 Window 객체의 속성 – UIWindow

11 디자인 편집용 상태 바 – Status Bar

12 뷰 배경 – View > Background

13 Tab Bar 메뉴 설정

14 디자인 편집기의 가로/세로 화면 전환

15 디자인 편집기에서 본 “View Controller”들

16 Tab Bar Controller의 구성

17 View Controller의 NIB Name을 잘못 설정한 소스에 대한 디버깅 사례

18 View Controller에 닙 파일 로드하기

19 탭 바 아이템 속성 – Tab Bar Item

20 탭 메뉴 아이콘 배치 – Image Inset

21 탭 메뉴의 배지(Badge)와 기본 아이콘(Identifier)

22 화면 구성 둘러보기

[9장] 내비게이션 바와 웹뷰로 Info 메뉴 화면 만들기

1 뷰(View)형 닙 파일 생성하기 – infoView.xib

2 디자인 영역 설정하기 – Simulated User Interface Elements

3 프로젝트에 이미지 등록하기

4 라이브러리 객체를 뷰에 추가하기

5 이미지 출력하기 – Image View

6 라운드 버튼 만들기

7 객체의 디자인 배치 – Alignment, Placement

8 뷰에 추가한 객체 구성 보기 – infoView.xib

9 웹뷰(WebView)형 닙 파일 생성 – webView.xib

10 디자인 영역 설정하기

11 웹뷰(WebView) 객체 추가하기

12 툴 바(Toolbar) 추가하기

13 뷰에 추가한 객체 구성 보기 – webView.xib

14 infoView 클래스 만들기

15 infoView.xib의 기본 연결 관계 정의

16 내비게이션 바 설정하기

17 웹뷰(WebView) 클래스 생성

18 webView.xib의 기본 연결 관계 정의

19 webView 클래스 작성

20 infoView 클래스 작성

21 webView.xib의 IBAction 연결 관계

22 MainWindow.xib의 infoView 클래스 호출

23 내비게이션 바와 웹뷰 실험하기

[10장] 아이콘 처리와 페이지 넘김 효과

1 아이콘 등록

2 앱 아이콘 디자인

3 탭 바(Tab Bar) 아이콘

4 탭 바 위치 바꾸기

5 페이지 넘김 애니메이션 – CurlUp

제 4 부 앱보드 만들기 – AppBoard

[11장] 고정 데이터 기반의 목록-TableView with Dictionary Data

1 목록 화면 클래스 생성 – noticeList.h, noticeList.m, noticeList.xib

2 내비게이션 바 안에서 목록 화면 클래스 호출 – MainWindow.xib

3 상세 화면 클래스 생성 – noticeDetail.h, noticeDetail.m, noticeDetail.xib

4 목록 클래스 작성하기

5 실험하기

[12장] XML 생성기 만들기 – XML Generator With PHP-MySQL

1 Mac OS X에서 MySQL을 관리하는 도구

2 XML 생성기 작성

3 공지사항 XML 실험하기 – Safari

[13장] 웹서버 통신 – NSURLConnection

1 서버와 통신을 위한 객체 선언 – noticeList.h

2 서버와 통신을 위한 로직 추가 – noticeList.m

3 서버 통신 실험하기

4 보안 프로토콜을 이용한 통신 – HTTPS

[14장] 데이터 모델링과 XML 해독

1 레코드용 데이터 모델 – notice.h notice.m

2 정보용 데이터 모델 – noticeInfo.h noticeInfo.m

3 XML 해독 클래스 – noticeParseOperation.h noticeParseOperation.m

4 XML 해독에 대한 델리게이트 처리 – noticeList.h, noticeList.m

6 실험 및 Warning 처리

[15장] 목록 페이징 기능 – UIPageControl

1 페이징 관련 인터페이스 추가 – noticeList.h

2 페이징 관련 로직 추가 – noticeList.m

3 페이징 뷰 객체 추가 및 연결 관계 정의

4 실험하기

[16장] 앱보드 검색 기능 – UISearchBar

1 검색 관련 인터페이스 추가 – noticeList.h

2 검색 관련 로직 추가 – noticeList.m

3 검색 화면 디자인 – noticeSearch.xib

4 검색 객체 연결 관계 정의 – noticeSearch.xib

5 실험하기

[17장] 앱보드 상세보기 기능

1 상세보기 클래스 인터페이스 작업 – noticeDetail.h

2 상세보기 클래스 로직 작성 – noticeDetail.m

3 목록 화면과의 연동 – noticeList.m

4 테이블 뷰 유형에 따른 데이터 객체 구분 연산 로직 – noticeList.m

5 상세 화면 디자인 – noticeDetail.xib

6 상세 화면 객체 연결 관계 – noticeDetail.xib

7 실험하기

[18장] 메모리 누수 점검 사례 – Instruments Leaks

1 성능 계측기 Instrument 실행

2 메모리 누수 찾기 및 디버깅 – noticeList, noticeParseOperation

3 검색 관련 추가 디버깅 – noticeList didFinishParsing: withInfo:

[19장] 네트웍 장애 시 로컬 데이터로 전환 – SQLite

1 터미널을 통한 SQLite 데이터베이스 생성 – notice.sqlite

2 .sqlite 파일을 리소스에 등록 – notice.sqlite

3 SQLite 제어 클래스 생성 – noticeDB.h noticeDB.m

4 로컬용 뷰 클래스 생성 – noticeLocal.h, noticeLocal.m, noticeLocal.xib

5 서버용 뷰 클래스의 연동 기능 추가 – noticeList.h, noticeList.m

6 실험하기

[20장] 액션 메뉴와 테이블 수정 기능

1 액션 델리게이션 및 메소드 추가 선언 – noticeLocal.h

2 액션 메뉴 출력 기능 추가 – noticeLocal.m

3 UIActionSheet로 콘텍스트 메뉴 구현 – noticeLocal.m

4 테이블 수정 기능 추가 – noticeLocal.m

5 네트웍 장애 화면 디버깅 – noticeList.xib

6 실험하기

[21장] 섹션과 인덱스 테이블 뷰 – Indexed TableView with Sections

1 섹션형 페이징 기능 추가 – noticeLocal.m

2 테이블 뷰에 인덱스 붙이기 – noticeLocal.m

3 실험하기

제 5 부 회원제 시스템 구축하기

[22장] 회원약관/회원가입

1 클래스 파일 생성하기

2 동적 XML 해독기 작성 – OWLXMLParser.h, OWLXMLParser.m

3 회원약관 클래스 작성 – userAgree.h, userAgree.m

4 회원가입/변경/탈퇴 클래스 작성 – userInfo.h, userInfo.m

5 서버에 회원 테이블 생성 – user_demo

6 등록코드 이미지 생성기 – user_addhint.php

7 세션 쿠키 로직 추가 – session.php

8 서버용 회원 프로세스 소스 작성하기 – user_proc.php

9 회원약관 화면 구성 – userAgree.xib

10 회원가입 화면 구성 – userInfo.xib

11 실험하기

[23장] 로그인/로그아웃 뷰 클래스

1 클래스 파일 생성하기

2 로그인 클래스 작성 – loginView.h, loginView.m

3 로그아웃 클래스 작성 – logoutView.h logoutView.m

4 로그인 화면 구성 – loginView.xib

5 로그인 화면의 연결 관계 설정

6 로그아웃 화면 구성 – logoutView.xib

7 로그아웃 화면의 연결 관계 설정

[24장] 화면 접근 제어/회원정보 변경/탈퇴

1 화면 접근 제어

2 실험하기

[25장] 서비스 연동을 이용한 고객센터 – UIApplication openURL

1 고객센터 클래스 생성 – helpDesk.h, helpDesk.m, helpDesk.xib

2 고객센터 클래스 작성 – helpDesk.h, helpDesk.m

3 고객센터 화면 구성 – helpDesk.xib

4 고객센터 화면의 연결 관계 설정

5 메인 탭 바와 고객센터 클래스 연동 – MainWindow.xib

6 관리자 정보 XML – admin_info.php

7 실험하기

8 웹 뷰를 이용한 연동 서비스 보정

제 6 부 소셜 네트워크 / Smart Reports

[26장] CoreData 설계 및 연결고리 구현

1 Smart Reports 소스 그룹 만들기

2 CoreData 설계 – reports.xcdatamodel

3 CoreData의 모델 클래스 생성 – NSManagedObject subclass

4 UIImage와 NSData의 연동 – ImageToDataTransformer

5 CoreData와 연동할 뷰 객체 생성 – smartReports, myReports

6 CoreData의 SQLite 연동 – NSManagedObjectContext, owllabSiteAppDelegate

[27장] CoreData, UITableView, 서버 연동

1 UITableViewCell 활용 – ReportTableViewCell

2 CoreData 및 서버 연동 관련 선언문 추가 – smartReport.h

3 CoreData 및 서버 연동 관련 로직 추가 – smartReport.m

4 IB(Interface Builder) 디자인 – smartReports.xib

5 탭 바 추가 및 IB 연결 관계 설정 – MainWindow.xib

6 XML 서버 작업

7 실험하기

[28장] CoreData 쓰기 / 수정 / 상세

1 쓰기 뷰 클래스 – smartWriter

2 수정 / 상세보기 뷰 클래스 – smartView

3 Smart Reports 상세 보기 연동 – smartReports.m

4 실험하기

[29장] 관리 기능을 포함한 테이블 뷰 – myReport

1 헤더파일 작성 – myReports.h

2 소스라인 작성 – myReports.m

3 실험하기

4 My Reports와 Smart Reports의 다운로드 동기화 디버깅

[30장] 접근 제어 및 카테고리 선택

1 탭 바를 통한 접근 제어 – owllabSiteAppDelegate

2 카테고리 선택 – typeView

3 수정 폼과 카테고리 테이블 뷰 연동 – smartView.m

4 실험하기

[31장] CoreData와 포토 이미지 연동 – smartView, photoView

1 포토 이미지 보기 – photoView

2 포토 편집/선택 – UIImagePickerController, smartView

3 실험 및 디버깅

[32장] 이미지 뷰 줌 기능 추가 – UIScrollViewDelegate, UIImageView

1 스크롤 객체 안의 이미지 뷰 – photoView.xib

2 소스 연결 관계 설정 – photoView.xib, photoView.h

3 줌 델리게이트 – photoView.m, UITapGestureRecognizer

4 탭 바 가리기 기능 추가 – smartView selectPhoto:

5 실험하기

[33장] CoreData와 동영상 연동 – smartView

1 MediaPlayer.framework 추가

2 동영상 선언 구문 – smartView.h

3 동영상 선택 – UIImagePickerController

4 동영상 섬네일 – MPMoviePlayerController thumbnailImageAtTime:-

5 동영상 포토앨범에 저장 – UISaveVideoAtPathToSavedPhotosAlbum()

6 동영상 재생 – MPMoviePlayerViewController

7 동영상 편집 참고 소스 – UIVideoEditorController

8 카메라 참고 소스 – UIImagePickerControllerSourceTypeCamera

9 가로/세로 화면 전환 – TabBarController

10 실험하기

[34장] CoreData를 서버에 업로드 – multipart/form-data

1 통신 관련 선언문 추가 – smartView.h

2 통신 관련 구문 추가 – smartView.m

3 업로드 서버 구현

4 실험하기

[35장] 성능 개선과 고급화 – Tuning

1 첨부 파일 다운로드 시점 튜닝

2 Thread와 Loading 표시 – performSelectorInBackground:,

performSelectorOnMainThread:

3 속성 객체를 이용한 동영상 섬네일 – smartView

4 My Reports 삭제 동기화

5 실험하기