이미지 검색을 사용해 보세요
검색창 이전화면 이전화면
최근 검색어
인기 검색어

소득공제
아이폰 앱 개발 완벽 가이드
이두진
PCBook(피시북) 2011.05.20.
베스트
IT 모바일 top20 1주
가격
43,000
10 38,700
YES포인트?
2,150원 (5%)
5만원 이상 구매 시 2천원 추가 적립
결제혜택
카드/간편결제 혜택을 확인하세요

이미 소장하고 있다면 판매해 보세요.

  •  해외배송 가능?
  •  문화비소득공제 가능

책소개

목차

제 1 부 iOS의 기초

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

iPhone SDK와 iOS SDK
1 애플 개발자 등록
2 Xcode와 iOS SDK 설치본 다운받기
3 Xcode와 iOS SDK 설치하기
자주 사용하는 응용프로그램을 독에 등록하려면

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

1 앱 프로젝트 생성
2 iPhone 가상기기에서 앱 실험

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

1 프로젝트 소스 버전 관리 - Snapshots
2 공동 소스 버전 관리 - Repositores
3 배포 버전 관리 - Archives
맥용 소스 서버 설치 - MAX OS X 내장 Subversion

[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
Use CoreData, Include Unit Tests
2 OpenGL 애니메이션 앱 - OpenGL ES Application
OpenGL이란
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 기초 문법

Cocoa Touch
Objective-C와 C++의 차이
Objective-C의 특성의 이해
언어는 외우는 것이 아니고 이해하고 익숙해지는 것
1 클래스 작성법
xxx.mm 소스 파일
클래스(Class)는 객체(Object)
@interface란?
@implementation이란?
NSString의 "NS"의 의미
"Instance Method"와 "Class Method"
NSString의 copy 메소드는 어디에 있나요?
메소드 추적하기
2 메소드(Method) 호출 방식
2.1 다른 언어와의 메소드 호출 방식 비교
2.2 메소드 호출 사례
두 번째 메소드 이름은 매개변수의 용도를 의미
3 메시징 - Messaging
메시징과 셀렉터는 개념적인 용어일 뿐
3.1 메시징 표기법 - Messaging Syntax
대괄호 구문(Bracket Syntax)과 점 구문(Dot Syntax)
3.2 셀렉터(Selector)
4 클래스 활용 및 메모리 관리
4.1 프로젝트에 클래스 추가 - user.h user.m
4.2 헤더파일(.h) 작성 - user.h
클래스 id
NSString과 같은 포인터 객체는 "*"으로 선언
고정 배열(NSArray)과 가변 배열(NSMutableArray)의 차이
4.3 메모리 관련 용어 요약
4.4 클래스 초기화 - (id)init() - alloc - init
NSObject copy는 retain과 release 기능을 모두 지원
4.5 종료 시 메모리 초기화 - (void)dealloc{} - release
4.6 get/set 메소드 정의
4.7 변수값의 변경 방법 - if changed - retain - release - set new value
4.8 mutableCopy - NSMutableArray NSArray
4.9 Autorelease Pool 사례 - NSAutoreleasePool
5 프로퍼티(속성변수) - @property, @synthesize
5.1 프로퍼티 개요 및 종류
5.2 프로퍼티 사례
프로퍼티 기본값 readwrite, assign은 생략 가능
6 NSString과 메모리 관리 - alloc, init, autorelease, retain, release
NSString 메모리 관리가 iOS 개발의 시작이자 끝
6.1 @로 문자열 정의하기
6.2 포맷(Format)으로 문자열 정의하기
포맷 변수 (Format Specifiers)
6.3 외부 클래스의 값의 설정과 호출 - user.h
6.4 retain-release 디버깅 사례
6.5 속성 변수 getter 메소드 호출 사례

[7장] Cocoa Touch

1 Cocoa Touch의 개요
2 Cocoa의 유래
3 Foundation과 UIKit 프레임웍
iOS에서 지원하는 기본 프레임웍들이 iOS의 DNA
4 iOS의 여러 가지 프레임웍 찾기

제 3 부 앱 사이트 만들기

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

1 프로젝트 생성
2 기본 소스 구성
3 기본 템플릿 실험하기
4 앱의 시작 클래스 소스 분석 - main.m
alloc는 메모리를 할당하는 기능
init는 클래스를 초기화하는 기능
5 공통 헤더파일 - xxx_Prefix.pch
6 윈도우 닙(nib) 파일 - MainWindow.xib
닙(nib) 파일
Interface Builder는 GUI 환경에서 개발
7 닙(nib) 객체의 속성창 - Attribute Inspector
8 닙(nib)의 기본 클래스 - File's Owner
클래스의 계층정보의 의미
9 닙(nib) 객체의 연결 관계 - Outlets
델리게이트(delegate) 속성
Outlets, Referencing Outlets, IBOutlet
10 Window 객체의 속성 - UIWindow
객체의 가변 위치와 가변 크기 - Autoresizing
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
사용자의 권한에 따라 메뉴 사용을 제한하는 "Bar Item > Enabled"
20 탭 메뉴 아이콘 배치 - Image Inset
21 탭 메뉴의 배지(Badge)와 기본 아이콘(Identifier)
탭 메뉴의 배지(Badge) 기능은 동적인 알림 기능으로 활용
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) 객체 추가하기
웹뷰 속성 기능 찾아보기 - Scaling, Detection
12 툴 바(Toolbar) 추가하기
13 뷰에 추가한 객체 구성 보기 - webView.xib
14 infoView 클래스 만들기
15 infoView.xib의 기본 연결 관계 정의
16 내비게이션 바 설정하기
17 웹뷰(WebView) 클래스 생성
18 webView.xib의 기본 연결 관계 정의
19 webView 클래스 작성
IBOutlet의 의미
20 infoView 클래스 작성
IBAction의 의미
21 webView.xib의 IBAction 연결 관계
22 MainWindow.xib의 infoView 클래스 호출
23 내비게이션 바와 웹뷰 실험하기

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

1 아이콘 등록
2 앱 아이콘 디자인
3 탭 바(Tab Bar) 아이콘
아이콘 이미지가 너무 큰 사례
이미지 색상과 무관한 탭 바 아이콘
4 탭 바 위치 바꾸기
5 페이지 넘김 애니메이션 - CurlUp
"nil"로 객체를 초기화

제 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 목록 클래스 작성하기
4.1 목록 헤더파일 - noticeList.h
NSMutableArray와 NSArray 활용의 차이
@property 변수는 반드시 @synthesize 처리
@property의 nonatomic은 동시성이 없는 속성 변수에 사용
4.2 목록 소스 파일 - noticeList.m
4.3 뷰 메소드 정의 - view
UITableViewController는 UIViewController를 포함
super는 상위 클래스 모두를 ...
"NSMutableArray addObject:"로 배열 데이터 추가
NSDictionary는 KeyValuePair 형
NSMutableDictionary는 테이블형 데이터 객체
tableView는 UITableViewController의 속성 객체
4.4 메모리 관리 메소드 - -MemoryWarning, -Unload, dealloc
4.5 테이블 뷰 메소드 - tableView:-
4.6 로직별 소스 분류 - #pragma mark
5 실험하기

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

1 Mac OS X에서 MySQL을 관리하는 도구
1.1 Navicat Lite 설치
1.2 MySQL 접속 정보 설정
MySQL 접속 정보
웹호스팅의 경우 서버 관리 지침에 따라...
1.3 공지사항 테이블 생성 - notice_demo
1.4 공지사항 실험 데이터 등록하기
2 XML 생성기 작성
2.1 세션 파일 - session.php
PHP 태그는 서버 환경에 따라 약간의 차이가...
2.2 데이터베이스 연동 모듈 - dbcon_light.php
MySQL은 UTF-8을 utf8로...
2.3 공지사항 XML 생성 로직 - notice_list.php
"태그"를 "노드", "엔트리", "객체"라고도...
3 공지사항 XML 실험하기 - Safari
GET 방식의 한글 검색 오류 시 URL Encode 방식으로...
3.1 보안 프로토콜을 통한 XML 실험 - https
웹호스팅을 할 때 HTTPS 서비스가 지원되는지 확인...
Safari에서 XML 문서 구조를 확인하려면...

[13장] 웹서버 통신 - NSURLConnection

1 서버와 통신을 위한 객체 선언 - noticeList.h
2 서버와 통신을 위한 로직 추가 - noticeList.m
2.1 import와 @synthesize 처리
2.2 속성 변수 초기화 - initPage
2.3 GET / POST 통신 로직 - getURLData
2.4 통신 델리게이트 메소드 처리 - connection:-
2.5 viewDidLoad 메소드 수정
3 서버 통신 실험하기
3.1 정상적인 서버 연결 실험
3.2 네트웍 차단 시 실험
4 보안 프로토콜을 이용한 통신 - HTTPS
4.1 SSL 신뢰 관련 로직 추가
4.2 SSL 연동 실험
4.3 SSL 자동 신뢰 처리하지 않을 경우

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

1 레코드용 데이터 모델 - notice.h notice.m
2 정보용 데이터 모델 - noticeInfo.h noticeInfo.m
3 XML 해독 클래스 - noticeParseOperation.h noticeParseOperation.m
4 XML 해독에 대한 델리게이트 처리 - noticeList.h, noticeList.m
앱은 필요에 따라 네트웍에 접근할 수 있어야...
5 XML 서버 통신과 해독 과정 정리
5.1 XML 서버와 통신 과정
5.2 XML 해독과 테이블 데이터 매핑 과정
6 실험 및 Warning 처리

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

1 페이징 관련 인터페이스 추가 - noticeList.h
2 페이징 관련 로직 추가 - noticeList.m
3 페이징 뷰 객체 추가 및 연결 관계 정의
4 실험하기

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

1 검색 관련 인터페이스 추가 - noticeList.h
2 검색 관련 로직 추가 - noticeList.m
URL 인코딩
UISearchDisplayController
Alloc 객체만 Release로 처리
필터링 옵션
NSOrderedSame
객체를 붙여넣을 때 객체를 선택하면 안 됩니다
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
터미널에 경로를 입력할 때, 탭 키 또는 드래그앤드롭
1.1 테이블 생성 - notice_demo
SQL문은 세미콜론이 실행 명령어입니다
1.2 터미널을 통한 SQLite 관리
1.3 GUI 프로그램을 통한 SQLite 관리
2 .sqlite 파일을 리소스에 등록 - notice.sqlite
3 SQLite 제어 클래스 생성 - noticeDB.h noticeDB.m
3.1 SQLite 프레임웍 등록 - libsqlite3.dylib
3.2 클래스 헤더 작성 - noticeDB.h
3.3 클래스 소스 작성 - noticeDB.m
NSCAssert는 조건 로그입니다
데이터베이스를 잘 닫아야...
4 로컬용 ? 클래스 생성 - noticeLocal.h, noticeLocal.m, noticeLocal.xib
4.1 닙 화면 디자인 - noticeLocal.xib
4.2 클래스 헤더 작성 - noticeLocal.h
4.3 클래스 소스 작성 - noticeLocal.m
5 서버용 뷰 클래스의 연동 기능 추가 - noticeList.h, noticeList.m
UIAlertView는 otherButtonTitles로 알림 창에 여러 개의 버튼을...
6 실험하기
가상기기에서 앱 파일과 .sqlite 파일의 위치

[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 클래스 파일 생성하기
1.1 회원약관 클래스 생성 - userAgree.h, userAgree.m, userAgree.xib
1.2 회원가입 클래스 생성 - userInfo.h, userInfo.m, userInfo.xib
1.3 XML 해독 클래스 생성 - OWLXMLParser.h, OWLXMLParser.m
2 동적 XML 해독기 작성 - OWLXMLParser.h, OWLXMLParser.m
가변 객체 안에 가변 객체를 추가할 때는 autorelease 처리
OWLXMLParser의 결과 객체 구조
3 회원약관 클래스 작성 - userAgree.h, userAgree.m
3.1 조건부 버튼 구현
3.2 다른 클래스에 객체 전달
3.3 탭 바를 이용한 화면 전환
3.4 쿠키 데이터 가져오기
3.5 탭 바를 통한 화면 전환
4 회원가입/변경/탈퇴 클래스 작성 - userInfo.h, userInfo.m
4.1 원격 이미지 출력
4.2 다목적 클래스 구현
4.3 스크롤 뷰 작동 구현
스크롤 뷰는 콘텐트 영역이 프레임을 넘쳐야...
4.4 입력란에 아이콘 출력 - UITextFeild setLeftView
4.5 활성된 입력란이 보이게 자동 스크롤 - scrollRectToVisible
4.6 입력란에 대한 제어 - UITextfield
입력란 제어를 위한 연결 관계
정규 표현식과 NSPredicate
4.7 탈퇴/취소/저장 버튼 메소드
내비게이션 바의 popViewControllerAnimated:는 이전 화면이 있을 때만 유효
4.8 안내창과 확인 버튼 처리
자동으로 입력란을 선택하는 becomeFirstResponder
4.9 서버와의 통신
URL 인코딩은 Escape 처리하는 것과 같은 의미
4.10 서버에서 쿠키 받아오기 - NSHTTPCookie, NSHTTPCookieStorage
4.11 서버 요청 결과 처리
4.12 로컬 쿠키 가져오기 및 삭제하기
5 서버에 회원 테이블 생성 - user_demo
6 등록코드 이미지 생성기 - user_addhint.php
세션과 쿠키, 그리고 보안
7 세션 쿠키 로직 추가 - session.php
8 서버용 회원 프로세스 소스 작성하기 - user_proc.php
9 회원약관 화면 구성 - userAgree.xib
9.1 회원약관 화면의 연결 관계 설정
10 회원가입 화면 구성 - userInfo.xib
10.1 회원가입 화면의 연결 관계 설정
디자인 편집기에서 가상기기로 실험하기
10.2 탭 바에 메뉴에 추가하기 - User Agreement, Create ID
10.3 탭 바 아이콘 등록 및 설정
11 실험하기

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

1 클래스 파일 생성하기
1.1 로그인 클래스 생성 - loginView.h loginView.m loginView.xib
1.2 로그아웃 클래스 생성 - logoutView.h logoutView.m logoutView.xib
2 로그인 클래스 작성 - loginView.h, loginView.m
3 로그아웃 클래스 작성 - logoutView.h logoutView.m
4 로그인 화면 구성 - loginView.xib
5 로그인 화면의 연결 관계 설정
6 로그아웃 화면 구성 - logoutView.xib
7 로그아웃 화면의 연결 관계 설정

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

1 화면 접근 제어
1.1 탭 바 아이콘 이미지 등록 - helpdesk.png, login.png, logout.png, user.png
1.2 탭 바에 메뉴 추가하기 - Help Desk, Login, Logout, My Info
1.3 고객센터(Help Desk) 탭 메뉴 설정
1.4 로그인(Login) 탭 메뉴 설정
1.5 로그아웃(Logout) 탭 메뉴 설정
1.6 회원정보 변경(My Info) 탭 메뉴 설정
1.7 텝 아이템의 뷰 컨트롤 클래스 정의 - loginView, logoutView, userInfo
1.8 탭 아이템 제목 정의
1.9 화면 접근 제어 로직 추가
2 실험하기
2.1 로그인 화면 실험하기
2.2 로그아웃/회원정보 변경 화면 실험하기
2.3 탈퇴 실험하기

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

1 고객센터 클래스 생성 - helpDesk.h, helpDesk.m, helpDesk.xib
2 고객센터 클래스 작성 - helpDesk.h, helpDesk.m
copy를 초기화하지 않은 객체에 대입할 때...
3 고객센터 화면 구성 - helpDesk.xib
4 고객센터 화면의 연결 관계 설정
5 메인 탭 바와 고객센터 클래스 연동 - MainWindow.xib
6 관리자 정보 XML - admin_info.php
7 실험하기
7.1 가상기기에서 실험하기
7.2 실물 단말기에서 실험하기
8 웹 뷰를 이용한 연동 서비스 보정
8.1 웹 뷰 연동 로직 추가 - helpDesk.h, helpDesk.m
8.2 웹 뷰를 통한 웹사이트 연동 실험
8.3 웹 뷰에서 길 찾기 실험
현재 위치는 GPS 시스템이 아닌 네트웍을 통해서도 가능

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

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

1 Smart Reports 소스 그룹 만들기
2 CoreData 설계 - reports.xcdatamodel
2.1 .xcdatamodel 파일 생성
2.2 Utilities 뷰와 Navigators 뷰 Show/Hide
2.3 Entity 추가
2.4 Entity > Attribute 추가
CoreData에서 Entity는 "테이블", Attribute는 "필드"
실제 테이블은 CoreData 객체명 앞에 "Z" 접두어가 붙어 생성됩니다
2.5 Entity 설정 정보 - Data Model Inspector 뷰
2.6 Entity > Attribute 설정 정보 - Data Model Inspector 뷰, Report
대중을 대상으로 할 때는 별명을...
2.7 ReportType 엔티티 작성
2.8 Image 엔티티 작성
2.9 엔티티 간의 연결 관계 설정 - Relationships
3 CoreData의 모델 클래스 생성 - NSManagedObject subclass
@dynamic과 @synthesize
4 UIImage와 NSData의 연동 - ImageToDataTransformer
5 CoreData와 연동할 뷰 객체 생성 - smartReports, myReports
5.1 Smart Reports 클래스 생성 - smartReports.h, smartReports.m
NSFetchedResultsController란?
NSManagedObjectContext란?
5.2 CoreData.framework 등록
5.3 My Report 클래스 생성 - myReports.h, myReports.m
6 CoreData의 SQLite 연동 - NSManagedObjectContext, owllabSiteAppDelegate

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

1 UITableViewCell 활용 - ReportTableViewCell
CGRectMake() 함수
2 CoreData 및 서버 연동 관련 선언문 추가 - smartReport.h
3 CoreData 및 서버 연동 관련 로직 추가 - smartReport.m
3.1 참조 및 속성 객체 정의 등 기본 구문 작성
3.2 질의 객체를 생성하는 메소드 - NSFetchedResultsController
3.3 NSFetchedResultsControllerDelegate 메소드들
3.4 질의 객체의 실행 - NSFetchedResultsController performFetch:
3.5 UITableView와 CoreData 연동
3.6 액션 메뉴 관련 메소드들
3.7 화면 전환 메소드들
3.8 서버에서 CoreData로 다운받는 메소드들
NSURLRequest의 Cache와 Timeout 기본 값
바이너리 데이터의 다운로드 방법론
NSData를 UIImage로 변환 - UIImage imageWithData:
NSData 읽기 - NSData dataWithContentsOfURL:
NSData 쓰기 - NSData writeToFile: atomically:
3.9 UITableView에서 CoreData 삭제하기
3.10 형변환 유틸 메소드들
3.11 뷰 라이프 사이클
4 IB(Interface Builder) 디자인 - smartReports.xib
5 탭 바 추가 및 IB 연결 관계 설정 - MainWindow.xib
6 XML 서버 작업
6.1 서버 테이블 작성
6.2 XML 제너레이터 작성
6.3 XML 실험
6.4 첨부 파일만 다운받는 XML - smartreport_file.php
다운로드 폴더의 보안조치 필요
리포트 첨부 파일명의 규칙
서버에서 동영상 섬네일 파일 생성
앱/서버 튜닝 - 목록은 가볍게...
7 실험하기
7.1 기존 앱 삭제 후 실험하기
7.2 CoreData가 생성한 SQLite 파일
7.3 다운받기 실험

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

1 쓰기 뷰 클래스 - smartWriter
1.1 쓰기 뷰 클래스 생성
1.2 화면 구성과 IBOutlet 연결 관계 설정 - smartWriter.xib, 소스 연결 방식
1.3 헤더파일 작성 - smartWriter.h
1.4 소스파일 작성 - smartWriter.m
2 수정 / 상세보기 뷰 클래스 - smartView
2.1 수정 / 상세보기 뷰 클래스 생성
2.2 tableHeaderView 닙 생성 및 디자인 - smartViewHeader.xib
2.3 소스 연결 관계 설정 - smartViewHeader.xib, smartView.h
2.4 헤더파일 작성 - smartView.h
2.5 소스파일 작성 - smartView.m, tableHeaderView, UISwitch, UITableViewCell, setEditing:-
3 Smart Reports 상세 보기 연동 - smartReports.m
4 실험하기

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

1 헤더파일 작성 - myReports.h
2 소스라인 작성 - myReports.m
2.1 나의 리포트 출력하기 - NSFetchedResultsController
2.2 CoreData와 편집용 테이블 뷰 연동
2.3 액션 메뉴 추가
2.4 쓰기 화면과 연동
2.5 탭 바 전환과 쿠키 메소드 추가
2.6 카테고리 데이터와 나의 리포트 다운받기
서버와 로컬 데이터 동기화, Sync
2.7 형변환 유틸 및 뷰 라이프 사이클
3 실험하기
3.1 로그인 동기화 관련 디버깅
3.2 한글 자판 설정
3.3 UISwitch IBAction Event 디버깅 - smartViewHeader.xib
4 My Reports와 Smart Reports의 다운로드 동기화 디버깅
4.1 종합 테스트를 통한 버그 검출
4.2 콘솔의 로그 분석 및 데이터 조사
4.3 Breakpoint를 이용한 오류 원인 추적
4.4 가설을 이용한 오류 범위 축소
4.5 NSFetchedResultsController의 동기화 특성 파악
4.6 가설을 사실로 확신하기 위한 근거 실험
디버깅에서 가설의 함정과 현명함
4.7 NSFetchedResultsController의 캐시 관리
문제의 해결은 본질의 이해에 해결책이...
4.8 Breakpoint 해제
4.9 최종 확인 실험
디버깅은 객체의 본질 및 특성에 대한 이해를 시작으로...

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

1 탭 바를 통한 접근 제어 - owllabSiteAppDelegate
2 카테고리 선택 - typeView
2.1 카테고리 테이블 뷰 클래스 생성
2.2 헤더파일 작성 - typeView.h
2.3 소스라인 작성 - typeView.m
3 수정 폼과 카테고리 테이블 뷰 연동 - smartView.m
4 실험하기

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

1 포토 이미지 보기 - photoView
1.1 포토 이미지 보기 뷰 클래스 생성
1.2 닙 화면 구성 - photoView.xib, UIImage
1.3 소스 연결 관계 설정 - photoView.xib, photoView.h
1.4 헤더파일 작성 - photoView.h
1.5 소스파일 작성 - photoView.m
2 포토 편집/선택 - UIImagePickerController, smartView
2.1 UIImagePickerController와 UINavigationControllerDelegate - smartView
3 실험 및 디버깅
3.1 상세 이미지 보기 실험
3.2 가상기기 포토앨범에 이미지 넣고 실험
3.3 이미지 픽커 실험
3.4 내비게이션 바 Back 버튼 안보임 현상 디버깅

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

1 스크롤 객체 안의 이미지 뷰 - photoView.xib
1.1 View에 UIScrollView 추가
1.2 UIImageView 가로/세로 비율 유지 - Aspect Fit
복잡한 디자인 구조는 Navigator를 활용...
1.3 스크롤 뷰의 콘텐트 영역과 UIImageView의 크기
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
9.1 TabBarController 클래스 생성
9.2 TabBarController 소스 작성 - TabBarController.h, TabBarController.m
9.3 UITabBarController를 UITabBarController로 교체 - MainWindow.xib
10 실험하기
10.1 가상기기 회전 실험
10.2 실물 단말기 - 동영상 선택/재생/회전 실험
10.3 실물 단말기 - 이미지 회전 실험

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

1 통신 관련 선언문 추가 - smartView.h
2 통신 관련 구문 추가 - smartView.m
2.1 통신 관련 객체 정의와 메모리 관리
2.2 수정 완료시 업로드 확인 요청
2.3 multipart/form-data로 업로드 요청
나만의 솔루션은 쌓여가는 실험적인 경험치
2.4 통신 델리게이트 메소드들
로컬과 서버 데이터의 동기화와 여건에 대한 고민
2.5 결과 XML 해독 및 업로드 후속 처리
고민 후, 관례와의 비교
2.6 기타 유틸리티 메소드들
3 업로드 서버 구현
업로드 서버에 대한 지식 필요
3.1 업로드 프로세스 작성 - smartreport_upload.php
3.2 실험용 등록폼 만들기 - smartreport_upload_form.php
3.3 Safari에서 실험하기
4 실험하기

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

1 첨부 파일 다운로드 시점 튜닝
1.1 목록 다운시 첨부 파일 제외 - smartReports initReports:, myReports initMyReports:
2 Thread와 Loading 표시 - performSelectorInBackground:, performSelectorOnMainThread:
2.1 포토(사진) 버튼 클릭시 이미지 다운로드 실행 - smartView selectPhoto:-
2.2 동영상 버튼 클릭시 다운로드 실행 - smartView selectMovie:-
동영상 다운로드 방식과 스트림 방식
3 속성 객체를 이용한 동영상 섬네일 - smartView
튜닝은 근본 대책과 신속한 대책을 모두...
3.1 동영상 섬네일 속성 객체 선언 - movieThumb
3.2 섬네일 다운로드 시점 튜닝
4 My Reports 삭제 동기화
4.1 삭제시 서버에 삭제 요청 - myReports
4.2 서버에 리포트 삭제 로직 - myreports_delete.php
5 실험하기

저자 소개

저자 : 이두진
1997년에 설립된 “아울연구소”( www.owllab.com )는 “아울”( www.owl.co.kr )이라는 소프트웨어 개발 회사가 앞선 IT 기술의 동향과 발전 추이를 스터디하는 목적으로 설립한 연구소입니다. 웹 시절부터 모바일 연동 개발을 해왔기 때문에 스마트폰의 탄생과 함께 바로 앱 개발을 진행해 왔으며, 앱북과 앱콘텐츠의 개발, 배포 사업과 스마트워크와 관련된 다양한 솔루션을 제공하고 있습니다. 또한 그간의 개발 경험을 바탕으로 초보자와 후발 개발자들과 개발 노하우를 공유하고자 “안드로이드 앱 개발 완벽 가이드”를 출간하여 베스트셀러로 많은 사랑을 받고 있습니다.

아울은 다음과 같은 개발을 했습니다.

“쇼핑몰 엔진 개발, 원격강의 시스템 개발, 문제은행 시스템 개발, SiteBuilder 엔진 개발, 대형 커뮤니티 엔진 개발, 쇼핑몰 검색 엔진 개발, 전자 카탈로그 엔진 개발, NetOffice 서비스(프로젝트형 인트라넷 엔진) 개발, OWL DBMS V2.0 출시, OWL CMS V2.0 출시, 전력 제어관리 앱 개발, 앱 앨범 개발, 앱 북 개발, 앱 문화컨텐츠 개발”

품목정보

발행일
2011년 05월 20일
쪽수, 무게, 크기
1368쪽 | 2218g | 188*245mm
ISBN13
9788981931360

만든이 코멘트

안녕하세요 이 책의 편집자입니다.
2011-05-09
새로 발표된 iOS SDK 4.3을 기준으로 원고를 작성하느라고 출간 시기가 좀 늦춰졌습니다. 출간은 다소 늦어졌지만 아마도 새로운 SDK로 학습하시는 분들에게는 도움이 되실 겁니다. 6부에서는 아이폰 개발 시에 흔히 자료가 부족해서 애를 먹는 Core Data도 상세하게 설명했고 특히 SNS 개발을 위한 코드들을 제공하기 위해 심혈을 기울였습니다. 초보 수준으로 시작하지만 전문가 수준으로 끝낼 수 있도록 학습의 단계를 세밀하게 조절하고 있습니다. 부디 독자 여러분들의 학습에 큰 도움이 되었으면 좋겠습니다.

출판사 리뷰

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

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

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

초보자에게는 세밀하고 탄탄한 기초를!
후발 개발자에게는 실용 코드와 개발 노하우를!
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를 이용한 데이터베이스와 서버 연동 등 고급 기술을 익힙니다.

리뷰/한줄평6

리뷰

8.4 리뷰 총점

한줄평

첫번째 한줄평을 남겨주세요.