Your SlideShare is downloading. ×
iPhone  어플리케이션   제작   워크숍 <ul><li>team Gurunun </li></ul><ul><li>오재혁 </li></ul><ul><li>[email_address] </li></ul>
<ul><li>Cocoa </li></ul><ul><li>Objective-C </li></ul><ul><li>Window + View </li></ul>
<ul><li>Cocoa  의   탄생 ,  역사 </li></ul><ul><li>Cocoa  동작   구조 </li></ul><ul><li>어플리케이션   동작   순서 </li></ul><ul><li>Applicat...
Cocoa  의   탄생
<ul><li>1955 Steve Jobs  탄생 </li></ul><ul><li>1972 Jobs, HP  강의   참석 ,  직원으로   고용 , Stephen Wozniak  만남 </li></ul><ul><li>...
<ul><li>1983 John Sculley  영입  (1977  펩시콜라   최연소   사장 ) </li></ul><ul><li>1984  전성기 </li></ul><ul><li>1985  위기 , 5 월  Jobs...
http://www.youtube.com/watch?v=OYecfV3ubP8&feature=player_embedded
<ul><li>1985 NeXT Computer  설립 </li></ul><ul><li>1986 Avadis Tevanian, NeXTSTEP OS </li></ul><ul><li>1988 1st NeXT Compute...
<ul><li>1991 CERN Tim Berners-Lee HTML, first Web server </li></ul><ul><li>1992-3 John Carmack, Wolfenstein 3D, Doom </li>...
<ul><li>1993 NeXTSTEP -> OneStep </li></ul><ul><li>1996 Apple, NeXT  인수 </li></ul><ul><li>1999 NeXTSTEP -> Mac OS X Server...
<ul><li>2001 Mac OS X 10.0 </li></ul><ul><li>2002 iPhone TM  상표권   등록   시작 </li></ul><ul><li>2005 ROKR, “an iPod Shuffle o...
<ul><li>2007.6.29 iPhone Launched </li></ul><ul><li>2008 3.6 iPhone SDK release </li></ul><ul><li>2008.7.11 iPhone 3G Laun...
Cocoa  동작   구조 Window Server Cocoa Applications event reaction
어플리케이션   동작 어플리케이션   시작 nib  파일   불러오기 Main Event Loop  시작 어플리케이션   종료 이벤트   대기열에서   이벤트   수집 View  의   이벤트   코드   실행 Cust...
어플리케이션   동작 W i n d o w S e r v e r Application 화면 터치 센서 pixel event value event drawing
<ul><li>Executable </li></ul><ul><li>Info.plist </li></ul><ul><li>Resources </li></ul><ul><li>MainWindow.nib </li></ul><ul...
Executable Info.plist MainWindow.nib icon.png Default.png PkgInfo : APPL???? Bundle/creator OS Type Code
Localization Folder
Localization Folder
개발   도구 <ul><li>Xcode </li></ul><ul><li>Interface Builder </li></ul>프로그램   코드 ,  이미지 ,  소리 , ...  모든   리소스   파일   관리 GUI, ...
Debugging
Debugger Open
NSLog
NSLog  소개
NSLog <ul><li>String Format Specifiers </li></ul>%@ Objective-C, descriptionWithLocale %% %’ character %d, %D, %i Signed 3...
Cocoa Style <ul><li>Class Names </li></ul><ul><li>Variable Names </li></ul><ul><li>Method Names </li></ul><ul><li>Abbrevia...
Class Names <ul><li>capitalized </li></ul><ul><li>NS... (NeXTSTEP) </li></ul><ul><li>prefix ~ namespace </li></ul>
Variable Names <ul><li>Correct </li></ul><ul><li>Incorrect </li></ul>NSString *hostName; NSNumber *ipAddress; NSArray *acc...
Method Names [fileWrapper writeToFile: path atomically: YES updateFilenames: YES]; [finder openFile: mailing withApplicati...
Preprocessor constants/Macros <ul><li>all capitalized </li></ul>#define MAX_ENTRIES 20 #ifdef ENABLE_BINDINGS_SUPPORT
Model-View-Controller <ul><li>Model : Data </li></ul><ul><li>View : UI </li></ul><ul><li>Controller : Logic </li></ul>
Mutable objects <ul><li>NSArray :  초기화   이후   수정   불가 </li></ul><ul><li>NSMutableArray :  가능 </li></ul>
Delegation <ul><li>The Delegating object : a framework object </li></ul><ul><li>The Delegate : a custom controller object,...
Notification <ul><li>Receiver:Poster = n:1 </li></ul><ul><li>Poster can send any message </li></ul>
알아두면   좋은   문서 <ul><li>Foundation Framework Reference </li></ul><ul><li>Cocoa Fundamentals Guide </li></ul>
Objective-C
Objective-C <ul><li>SmallTalk  에   영향   받아  C  를   확장한   언어 </li></ul><ul><li>1986 Brad Cox, Tom Love </li></ul><ul><li>Ob...
Object <ul><li>메모리를   할당   받고 ,  그   안에   변수   저장 </li></ul><ul><li>“ 객체에   메모리   할당하는   법 ” </li></ul><ul><li>“ 객체가   갖고 ...
Class <ul><li>Object  를   만드는   공장 </li></ul>
Instance <ul><li>Class  가   메모리에   생성한   객체 </li></ul>
Method <ul><li>객체에   연관된   함수 </li></ul><ul><li>객체에  Message  를   보내서  Method  를   사용한다 . </li></ul>
Framework <ul><li>함께   사용하는  Class  의   집합 </li></ul><ul><li>Class  를   재사용하기   위해  Library  로   컴파일   해둔   것 </li></ul><u...
<ul><li>id (4) : pointer to Object </li></ul><ul><li>nil : a null Object instance </li></ul><ul><li>BOOL (char, 1) : YES 1...
Operators <ul><li>+, -, /, *, % </li></ul><ul><li>>, >=, ==, !=, <=, < </li></ul><ul><li>&&, ||, ! </li></ul>
Conditions <ul><li>if  </li></ul>if (test) do_something else if (test) do_something_else else ...
Loops <ul><li>while (test) {statement;} </li></ul><ul><li>do {} while (test); </li></ul><ul><li>for (...;...;...) {} </li>...
Defining a class <ul><li>@interface ... @end </li></ul><ul><li>@implementation </li></ul>@interface ClassName : ItsSuperCl...
Method Declaration <ul><li>MethodType (ReturnType) MethodName: (argumentType) argumentName ...;  </li></ul><ul><li>MethodT...
Object Instantiation <ul><li>id anObject = [[SomeClass alloc] init]; </li></ul><ul><li>[anObject release]; </li></ul>
Object Method Call <ul><li>[receiver message]; </li></ul><ul><li>[aRect setOriginX:30 y:50]; </li></ul><ul><li>[aRect setC...
메모리   관리 <ul><li>NSObject, Reference counter </li></ul><ul><li>new, alloc :  메모리   할당 , ref count +1 </li></ul><ul><li>ret...
메모리   관리  con’t <ul><li>dealloc method :  모든  instance  에  release </li></ul><ul><li>블록   내에서  alloc : release = 1:1 </li>...
References <ul><li>#import </li></ul><ul><li>#include </li></ul>
Property <ul><li>@property (attributes [,attribute2, ...]) type name; </li></ul><ul><li>readwrite / readonly </li></ul><ul...
Property con’t <ul><li>@synthesize : setter, getter </li></ul><ul><li>Interface Builder outlet </li></ul>@property float v...
Protocol <ul><li>@protocol </li></ul>@protocol ProtocolName method declarations @end
Category <ul><li>Add Methods to Class </li></ul>#import “ClassName.h” @interface ClassName (CategoryName) // method declar...
Interface Builder Constants <ul><li>IBOutlet </li></ul><ul><li>IBAction </li></ul>- (IBAction) respondToButtonClick : (id)...
Fast Enumeration <ul><li>NSArray, NSDictionary, NSSet, NSEnumerator, ... </li></ul>NSArray *array = [NSArray arrayWithObje...
Selector <ul><li>Class  의  Method table  에   대응하는  index </li></ul><ul><li>@selector </li></ul><ul><li>프로그램에서   타겟   설정하기 ...
Developer Document  내용   찾아보기 <ul><li>NSObject </li></ul><ul><li>NSArray </li></ul><ul><li>NSMutableArray </li></ul><ul><l...
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
Upcoming SlideShare
Loading in...5
×

I phone 2 release

983

Published on

Saii iPhone Workshop Lecture 2

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
983
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

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 of "I phone 2 release"

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

    ×