목차

제 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 실험하기