Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
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
Nächste SlideShare
Wird geladen in …5
×

I phone 2 release

1.187 Aufrufe

Veröffentlicht am

Saii iPhone Workshop Lecture 2

Veröffentlicht in: Technologie, News & Politik
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

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

×