I phone 2 release

  • 956 views
Uploaded on

Saii iPhone Workshop Lecture 2

Saii iPhone Workshop Lecture 2

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
956
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • 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 만 활성화 된다 ., 보이고 , 사용자 입력을 받는다 .

Transcript

  • 1. iPhone 어플리케이션 제작 워크숍
    • team Gurunun
    • 오재혁
    • [email_address]
  • 2.
    • Cocoa
    • Objective-C
    • Window + View
  • 3.
    • Cocoa 의 탄생 , 역사
    • Cocoa 동작 구조
    • 어플리케이션 동작 순서
    • Application Bundle 구성
    • 개발 도구
    • Debugger, NSLog
    • Cocoa Style
    Cocoa
  • 4. Cocoa 의 탄생
  • 5.
    • 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 직원 )
  • 6.
    • 1983 John Sculley 영입 (1977 펩시콜라 최연소 사장 )
    • 1984 전성기
    • 1985 위기 , 5 월 Jobs 퇴사
  • 7. http://www.youtube.com/watch?v=OYecfV3ubP8&feature=player_embedded
  • 8.
    • 1985 NeXT Computer 설립
    • 1986 Avadis Tevanian, NeXTSTEP OS
    • 1988 1st NeXT Computer ‘The Cube’
    • 1990 소매 판매 시작 $9,999
  • 9.
    • 1991 CERN Tim Berners-Lee HTML, first Web server
    • 1992-3 John Carmack, Wolfenstein 3D, Doom
  • 10.
    • 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
  • 11.
    • 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)
  • 12.
    • 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
  • 13. Cocoa 동작 구조 Window Server Cocoa Applications event reaction
  • 14. 어플리케이션 동작 어플리케이션 시작 nib 파일 불러오기 Main Event Loop 시작 어플리케이션 종료 이벤트 대기열에서 이벤트 수집 View 의 이벤트 코드 실행 Custom 객체 코드 실행 (delegate) 필요하면 뷰 다시 그리기
  • 15. 어플리케이션 동작 W i n d o w S e r v e r Application 화면 터치 센서 pixel event value event drawing
  • 16.
    • Executable
    • Info.plist
    • Resources
    • MainWindow.nib
    • icon.png
    • Default.png
    • Settings.bundle
    • Icon-Setting.png
    • Localization Folders
    Application Bundle
  • 17. Executable Info.plist MainWindow.nib icon.png Default.png PkgInfo : APPL???? Bundle/creator OS Type Code
  • 18. Localization Folder
  • 19. Localization Folder
  • 20. 개발 도구
    • Xcode
    • Interface Builder
    프로그램 코드 , 이미지 , 소리 , ... 모든 리소스 파일 관리 GUI, 객체 생성 , 속성 편집 , 객체간 연결
  • 21. Debugging
  • 22. Debugger Open
  • 23. NSLog
  • 24. NSLog 소개
  • 25. 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 ...
  • 26. Cocoa Style
    • Class Names
    • Variable Names
    • Method Names
    • Abbreviations
    • Preprocessor Constants / Macros
  • 27. Class Names
    • capitalized
    • NS... (NeXTSTEP)
    • prefix ~ namespace
  • 28. Variable Names
    • Correct
    • Incorrect
    NSString *hostName; NSNumber *ipAddress; NSArray *accounts; NSString *HST_NM; NSNumber *theip; NSArray *nsma; NSString *_name;
  • 29. Method Names [fileWrapper writeToFile: path atomically: YES updateFilenames: YES]; [finder openFile: mailing withApplication: @”MailDrop” and Deactivate: YES];
  • 30. Preprocessor constants/Macros
    • all capitalized
    #define MAX_ENTRIES 20 #ifdef ENABLE_BINDINGS_SUPPORT
  • 31. Model-View-Controller
    • Model : Data
    • View : UI
    • Controller : Logic
  • 32. Mutable objects
    • NSArray : 초기화 이후 수정 불가
    • NSMutableArray : 가능
  • 33. Delegation
    • The Delegating object : a framework object
    • The Delegate : a custom controller object, typically
    • Delegating Object:Delegate = 1:1
  • 34. Notification
    • Receiver:Poster = n:1
    • Poster can send any message
  • 35. 알아두면 좋은 문서
    • Foundation Framework Reference
    • Cocoa Fundamentals Guide
  • 36. Objective-C
  • 37. Objective-C
    • SmallTalk 에 영향 받아 C 를 확장한 언어
    • 1986 Brad Cox, Tom Love
    • Object-Oriented (Concept/Programming)
  • 38. Object
    • 메모리를 할당 받고 , 그 안에 변수 저장
    • “ 객체에 메모리 할당하는 법 ”
    • “ 객체가 갖고 있는 여러 변수 확인하는 법 ”
    • “ 사용 끝난 객체를 메모리에서 제거하는 법 ”
  • 39. Class
    • Object 를 만드는 공장
  • 40. Instance
    • Class 가 메모리에 생성한 객체
  • 41. Method
    • 객체에 연관된 함수
    • 객체에 Message 를 보내서 Method 를 사용한다 .
  • 42. Framework
    • 함께 사용하는 Class 의 집합
    • Class 를 재사용하기 위해 Library 로 컴파일 해둔 것
    • .framework
  • 43.
    • 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
  • 44. Operators
    • +, -, /, *, %
    • >, >=, ==, !=, <=, <
    • &&, ||, !
  • 45. Conditions
    • if
    if (test) do_something else if (test) do_something_else else ...
  • 46. Loops
    • while (test) {statement;}
    • do {} while (test);
    • for (...;...;...) {}
  • 47. Defining a class
    • @interface ... @end
    • @implementation
    @interface ClassName : ItsSuperClass { instance variable declarations } method declarations @end #import “ClassName.h” @implementation ClassName method definitions @end
  • 48. Method Declaration
    • MethodType (ReturnType) MethodName: (argumentType) argumentName ...;
    • MethodType + : class method
    • MethodType - : instance method
  • 49. Object Instantiation
    • id anObject = [[SomeClass alloc] init];
    • [anObject release];
  • 50. Object Method Call
    • [receiver message];
    • [aRect setOriginX:30 y:50];
    • [aRect setColor:[otherRect color]];
    • self, super
  • 51. 메모리 관리
    • NSObject, Reference counter
    • new, alloc : 메모리 할당 , ref count +1
    • retain : ref count +1
    • copy : 복사본 생성 , 복사본의 ref count +1
    • release : ref count -1
    • autorelease : 임의 시점에 ref count -1
  • 52. 메모리 관리 con’t
    • dealloc method : 모든 instance 에 release
    • 블록 내에서 alloc : release = 1:1
  • 53. References
    • #import
    • #include
  • 54. Property
    • @property (attributes [,attribute2, ...]) type name;
    • readwrite / readonly
    • assign / retain / copy
    • / nonatomic
    [self setATable:nil]; == [aTable release]; aTable = nil;
  • 55. Property con’t
    • @synthesize : setter, getter
    • Interface Builder outlet
    @property float value; == - (float) value; - (void) setValue: (float) newValue; @property (nonatomic, retain) IBOutlet NSButton *myButton;
  • 56. Protocol
    • @protocol
    @protocol ProtocolName method declarations @end
  • 57. Category
    • Add Methods to Class
    #import “ClassName.h” @interface ClassName (CategoryName) // method declarations @end #import “ClassName+CategoryName.h” @implementation ClassName (CategoryName) // method definitions @end
  • 58. Interface Builder Constants
    • IBOutlet
    • IBAction
    - (IBAction) respondToButtonClick : (id)sender; @interface MyClass : NSObject { NSView * aViewOutlet; } @property (nonatomic, retain) IBOutlet NSView * aViewOutlet; ... @synthesize aViewOutlet;
  • 59. Fast Enumeration
    • NSArray, NSDictionary, NSSet, NSEnumerator, ...
    NSArray *array = [NSArray arrayWithObjects:@”1”, @”2”, @”3”, nil]; for (NSString *string in array) { NSLog(@”string is %@”, string); }
  • 60. Selector
    • Class 의 Method table 에 대응하는 index
    • @selector
    • 프로그램에서 타겟 설정하기
    [myButtonCell setAction:@selector(DoSomething:)];
  • 61. Developer Document 내용 찾아보기
    • NSObject
    • NSArray
    • NSMutableArray
    • NSString
  • 62. Window-based Application
  • 63. Window?
  • 64.  
  • 65. Add a View
  • 66. View?
  • 67. Add a View 1 Add a View 2 Add a View 3 Add a View 4
  • 68. View-based Application
  • 69.  
  • 70. + ‘Hello World’
  • 71. Hello World 1 Hello World 2 Hello World 3