• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
I phone 2 release
 

I phone 2 release

on

  • 1,284 views

Saii iPhone Workshop Lecture 2

Saii iPhone Workshop Lecture 2

Statistics

Views

Total Views
1,284
Views on SlideShare
1,284
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • OS 3.1.2 이후 iphone browser/explorer 등에서 application bundle 직접 접근 불가 57x57 icon, 광택효과 자동 Resources, 동일 폴더 저장 Local English.lproj, French.lproj, German.lproj, uk.lproj , ... 각 언어별 리소스 아이폰 설정 어플리케이션 위한 Settings.bundle, Icon-Settings. 29x29 MainWindow, 첫화면 코드 , 리소스 480x320 Default, MainWindow.nib loading pix
  • Application 몸통 Interface Builder 에서 Window 의 Visual 속성 변화 하거나 , Control 추가해도 변화 없다 .
  • 눈에 보이는 장면 구성 , window 최상단의 하나의 View 만 활성화 된다 ., 보이고 , 사용자 입력을 받는다 .

I phone 2 release I phone 2 release Presentation Transcript

  • iPhone 어플리케이션 제작 워크숍
    • team Gurunun
    • 오재혁
    • [email_address]
    • Cocoa
    • Objective-C
    • Window + View
    • Cocoa 의 탄생 , 역사
    • Cocoa 동작 구조
    • 어플리케이션 동작 순서
    • Application Bundle 구성
    • 개발 도구
    • Debugger, NSLog
    • Cocoa Style
    Cocoa
  • Cocoa 의 탄생
    • 1955 Steve Jobs 탄생
    • 1972 Jobs, HP 강의 참석 , 직원으로 고용 , Stephen Wozniak 만남
    • 1974 Jobs, Atari, 비디오 게임 디자이너 취직 , 인도 여행
    • 1975 Jobs, Wozniak, Apple 1 제작 시작
    • 1976.4.1 Apple 설립 , Steve Jobs, Stephen Wozniak (HP 직원 ), Ronald Wayne (Atari 직원 )
    • 1983 John Sculley 영입 (1977 펩시콜라 최연소 사장 )
    • 1984 전성기
    • 1985 위기 , 5 월 Jobs 퇴사
  • http://www.youtube.com/watch?v=OYecfV3ubP8&feature=player_embedded
    • 1985 NeXT Computer 설립
    • 1986 Avadis Tevanian, NeXTSTEP OS
    • 1988 1st NeXT Computer ‘The Cube’
    • 1990 소매 판매 시작 $9,999
    • 1991 CERN Tim Berners-Lee HTML, first Web server
    • 1992-3 John Carmack, Wolfenstein 3D, Doom
    • 1993 NeXTSTEP -> OneStep
    • 1996 Apple, NeXT 인수
    • 1999 NeXTSTEP -> Mac OS X Server 1.0, OpenStep Dev Toolkit -> Cocoa Apple registers iPhone.org to Apple.com
    • 2001 Mac OS X 10.0
    • 2002 iPhone TM 상표권 등록 시작
    • 2005 ROKR, “an iPod Shuffle on your phone” (with Motorola)
    • 2006.12.18 iPhone (VoIP phone, by LinkSys)
    • 2007.6.29 iPhone Launched
    • 2008 3.6 iPhone SDK release
    • 2008.7.11 iPhone 3G Launched
    • 2009.6.8 iPhone 3Gs Launched
    • 2010.6.24 iPhone 4 Launched
  • Cocoa 동작 구조 Window Server Cocoa Applications event reaction
  • 어플리케이션 동작 어플리케이션 시작 nib 파일 불러오기 Main Event Loop 시작 어플리케이션 종료 이벤트 대기열에서 이벤트 수집 View 의 이벤트 코드 실행 Custom 객체 코드 실행 (delegate) 필요하면 뷰 다시 그리기
  • 어플리케이션 동작 W i n d o w S e r v e r Application 화면 터치 센서 pixel event value event drawing
    • Executable
    • Info.plist
    • Resources
    • MainWindow.nib
    • icon.png
    • Default.png
    • Settings.bundle
    • Icon-Setting.png
    • Localization Folders
    Application Bundle
  • Executable Info.plist MainWindow.nib icon.png Default.png PkgInfo : APPL???? Bundle/creator OS Type Code
  • Localization Folder
  • Localization Folder
  • 개발 도구
    • Xcode
    • Interface Builder
    프로그램 코드 , 이미지 , 소리 , ... 모든 리소스 파일 관리 GUI, 객체 생성 , 속성 편집 , 객체간 연결
  • Debugging
  • Debugger Open
  • NSLog
  • NSLog 소개
  • NSLog
    • String Format Specifiers
    %@ Objective-C, descriptionWithLocale %% %’ character %d, %D, %i Signed 32-bit integer (int) %u, %U Unsigned 32-bit integer (unsigned int) %x, %X Unsigned 32-bit integer in hexadecimal %o, %O Unsigned 32-bit integer in octal %f 64-bit floating-point number (double) %e, %E 64-bit floating-point number in scientific notation %c 8-bit unsigned character (unsigned char) %C 16-bit Unicode character (unichar) %s Null-terminated array of 8-bit unsigned characters %S Null-terminated array of 16-bit Unicode characters %p Void Pointer (void *) in hexadecimal ...
  • Cocoa Style
    • Class Names
    • Variable Names
    • Method Names
    • Abbreviations
    • Preprocessor Constants / Macros
  • Class Names
    • capitalized
    • NS... (NeXTSTEP)
    • prefix ~ namespace
  • Variable Names
    • Correct
    • Incorrect
    NSString *hostName; NSNumber *ipAddress; NSArray *accounts; NSString *HST_NM; NSNumber *theip; NSArray *nsma; NSString *_name;
  • Method Names [fileWrapper writeToFile: path atomically: YES updateFilenames: YES]; [finder openFile: mailing withApplication: @”MailDrop” and Deactivate: YES];
  • Preprocessor constants/Macros
    • all capitalized
    #define MAX_ENTRIES 20 #ifdef ENABLE_BINDINGS_SUPPORT
  • Model-View-Controller
    • Model : Data
    • View : UI
    • Controller : Logic
  • Mutable objects
    • NSArray : 초기화 이후 수정 불가
    • NSMutableArray : 가능
  • Delegation
    • The Delegating object : a framework object
    • The Delegate : a custom controller object, typically
    • Delegating Object:Delegate = 1:1
  • Notification
    • Receiver:Poster = n:1
    • Poster can send any message
  • 알아두면 좋은 문서
    • Foundation Framework Reference
    • Cocoa Fundamentals Guide
  • Objective-C
  • Objective-C
    • SmallTalk 에 영향 받아 C 를 확장한 언어
    • 1986 Brad Cox, Tom Love
    • Object-Oriented (Concept/Programming)
  • Object
    • 메모리를 할당 받고 , 그 안에 변수 저장
    • “ 객체에 메모리 할당하는 법 ”
    • “ 객체가 갖고 있는 여러 변수 확인하는 법 ”
    • “ 사용 끝난 객체를 메모리에서 제거하는 법 ”
  • Class
    • Object 를 만드는 공장
  • Instance
    • Class 가 메모리에 생성한 객체
  • Method
    • 객체에 연관된 함수
    • 객체에 Message 를 보내서 Method 를 사용한다 .
  • Framework
    • 함께 사용하는 Class 의 집합
    • Class 를 재사용하기 위해 Library 로 컴파일 해둔 것
    • .framework
    • id (4) : pointer to Object
    • nil : a null Object instance
    • BOOL (char, 1) : YES 1, NO 0
    • char (1), int (4), short (2), long (4), long long (8), double (8)
    Types
  • Operators
    • +, -, /, *, %
    • >, >=, ==, !=, <=, <
    • &&, ||, !
  • Conditions
    • if
    if (test) do_something else if (test) do_something_else else ...
  • Loops
    • while (test) {statement;}
    • do {} while (test);
    • for (...;...;...) {}
  • Defining a class
    • @interface ... @end
    • @implementation
    @interface ClassName : ItsSuperClass { instance variable declarations } method declarations @end #import “ClassName.h” @implementation ClassName method definitions @end
  • Method Declaration
    • MethodType (ReturnType) MethodName: (argumentType) argumentName ...;
    • MethodType + : class method
    • MethodType - : instance method
  • Object Instantiation
    • id anObject = [[SomeClass alloc] init];
    • [anObject release];
  • Object Method Call
    • [receiver message];
    • [aRect setOriginX:30 y:50];
    • [aRect setColor:[otherRect color]];
    • self, super
  • 메모리 관리
    • NSObject, Reference counter
    • new, alloc : 메모리 할당 , ref count +1
    • retain : ref count +1
    • copy : 복사본 생성 , 복사본의 ref count +1
    • release : ref count -1
    • autorelease : 임의 시점에 ref count -1
  • 메모리 관리 con’t
    • dealloc method : 모든 instance 에 release
    • 블록 내에서 alloc : release = 1:1
  • References
    • #import
    • #include
  • Property
    • @property (attributes [,attribute2, ...]) type name;
    • readwrite / readonly
    • assign / retain / copy
    • / nonatomic
    [self setATable:nil]; == [aTable release]; aTable = nil;
  • Property con’t
    • @synthesize : setter, getter
    • Interface Builder outlet
    @property float value; == - (float) value; - (void) setValue: (float) newValue; @property (nonatomic, retain) IBOutlet NSButton *myButton;
  • Protocol
    • @protocol
    @protocol ProtocolName method declarations @end
  • Category
    • Add Methods to Class
    #import “ClassName.h” @interface ClassName (CategoryName) // method declarations @end #import “ClassName+CategoryName.h” @implementation ClassName (CategoryName) // method definitions @end
  • Interface Builder Constants
    • IBOutlet
    • IBAction
    - (IBAction) respondToButtonClick : (id)sender; @interface MyClass : NSObject { NSView * aViewOutlet; } @property (nonatomic, retain) IBOutlet NSView * aViewOutlet; ... @synthesize aViewOutlet;
  • Fast Enumeration
    • NSArray, NSDictionary, NSSet, NSEnumerator, ...
    NSArray *array = [NSArray arrayWithObjects:@”1”, @”2”, @”3”, nil]; for (NSString *string in array) { NSLog(@”string is %@”, string); }
  • Selector
    • Class 의 Method table 에 대응하는 index
    • @selector
    • 프로그램에서 타겟 설정하기
    [myButtonCell setAction:@selector(DoSomething:)];
  • Developer Document 내용 찾아보기
    • NSObject
    • NSArray
    • NSMutableArray
    • NSString
  • Window-based Application
  • Window?
  •  
  • Add a View
  • View?
  • Add a View 1 Add a View 2 Add a View 3 Add a View 4
  • View-based Application
  •  
  • + ‘Hello World’
  • Hello World 1 Hello World 2 Hello World 3