5. About tapadoo
• Focus is on developing great mobile applications. Initial focus on iPhone
http://www.tapadoo.com
6. About tapadoo
• Focus is on developing great mobile applications. Initial focus on iPhone
• Offering both published titles and development services
http://www.tapadoo.com
7. About tapadoo
• Focus is on developing great mobile applications. Initial focus on iPhone
• Offering both published titles and development services
• First application about to go live; 2 others in development
http://www.tapadoo.com
8. About tapadoo
• Focus is on developing great mobile applications. Initial focus on iPhone
• Offering both published titles and development services
• First application about to go live; 2 others in development
• Interested in ideas, partnerships, projects
http://www.tapadoo.com
13. What do I need to learn?
http://www.tapadoo.com
14. What do I need to learn?
• App Store Process
http://www.tapadoo.com
15. What do I need to learn?
• App Store Process
• Objective-C
http://www.tapadoo.com
16. What do I need to learn?
• App Store Process
• Objective-C
• iPhone SDK Class Library
http://www.tapadoo.com
17. What do I need to learn?
• App Store Process
• Objective-C
• iPhone SDK Class Library
• Tools: XCode, Interface Builder, iPhone Simulator, Instruments
http://www.tapadoo.com
18. What do I need to learn?
• App Store Process
• Objective-C
• iPhone SDK Class Library
• Tools: XCode, Interface Builder, iPhone Simulator, Instruments
• Signing, Deploying and Releasing
http://www.tapadoo.com
19. What do I need to learn?
• App Store Process
• Objective-C
• iPhone SDK Class Library
• Tools: XCode, Interface Builder, iPhone Simulator, Instruments
• Signing, Deploying and Releasing
• ...and you’ll need a Mac too!
http://www.tapadoo.com
35. The Courtship Process
• Join ADC
• Set up account and tax information
• Develop app, sign app
• Submit
• Wait
• Release!
http://www.tapadoo.com
36. Objective-C
• Object Oriented extensions to ANSI-C
• Full set of class libraries (collections, etc.)
• Quite different syntax
• Be careful with memory management
http://www.tapadoo.com
37. Very Simple Objective-C Class
• Consists of interface section (in classname.h)...
@interface Rectangle : NSObject {
int width;
int length;
}
-(int) area;
-(void) setWidth: (int) w;
-(void) setLength: (int) l;
@end
http://www.tapadoo.com
38. Very Simple Objective-C Class
• Consists of interface section (in classname.h)...
@interface Rectangle : NSObject {
int width;
int length;
}
-(int) area;
-(void) setWidth: (int) w;
-(void) setLength: (int) l;
@end
http://www.tapadoo.com
39. Very Simple Objective-C Class
• Consists of interface section (in classname.h)...
@interface Rectangle : NSObject {
int width;
int length;
}
-(int) area;
-(void) setWidth: (int) w;
-(void) setLength: (int) l;
@end
http://www.tapadoo.com
40. Very Simple Objective-C Class
• Consists of interface section (in classname.h)...
@interface Rectangle : NSObject {
int width;
int length;
}
-(int) area;
-(void) setWidth: (int) w;
-(void) setLength: (int) l;
@end
http://www.tapadoo.com
41. Very Simple Objective-C Class
• Consists of interface section (in classname.h)...
@interface Rectangle : NSObject {
int width;
int length;
}
-(int) area;
-(void) setWidth: (int) w;
-(void) setLength: (int) l;
@end
http://www.tapadoo.com
42. Implementation
• ...and an implementation section in a .m file
#import quot;Rectangle.hquot;
@implementation Rectangle
-(int) area {
return width * length;
}
-(void) setWidth: (int) w {
width = w;
}
-(void) setLength: (int) l {
length = l;
}
@end
http://www.tapadoo.com
43. Implementation
• ...and an implementation section in a .m file
#import quot;Rectangle.hquot;
@implementation Rectangle
-(int) area {
return width * length;
}
-(void) setWidth: (int) w {
width = w;
}
-(void) setLength: (int) l {
length = l;
}
@end
http://www.tapadoo.com
44. Implementation
• ...and an implementation section in a .m file
#import quot;Rectangle.hquot;
@implementation Rectangle
-(int) area {
return width * length;
}
-(void) setWidth: (int) w {
width = w;
}
-(void) setLength: (int) l {
length = l;
}
@end
http://www.tapadoo.com
45. Implementation
• ...and an implementation section in a .m file
#import quot;Rectangle.hquot;
@implementation Rectangle
-(int) area {
return width * length;
}
-(void) setWidth: (int) w {
width = w;
}
-(void) setLength: (int) l {
length = l;
}
@end
http://www.tapadoo.com
46. Implementation
• ...and an implementation section in a .m file
#import quot;Rectangle.hquot;
@implementation Rectangle
-(int) area {
return width * length;
}
-(void) setWidth: (int) w {
width = w;
}
-(void) setLength: (int) l {
length = l;
}
@end
http://www.tapadoo.com
47. Objective-C Syntax
• Method calls are enclosed in square brackets
Rectangle *r = [[Rectangle alloc] init];
[r setWidth:3];
[r setLength:2];
NSLog(@quot;Area of r is %dquot;, [r area]);
[r release];
http://www.tapadoo.com
48. Objective-C Syntax
• Method calls are enclosed in square brackets
Rectangle *r = [[Rectangle alloc] init];
[r setWidth:3];
[r setLength:2];
NSLog(@quot;Area of r is %dquot;, [r area]);
[r release];
http://www.tapadoo.com
49. Objective-C Syntax
• Method calls are enclosed in square brackets
Rectangle *r = [[Rectangle alloc] init];
[r setWidth:3];
[r setLength:2];
NSLog(@quot;Area of r is %dquot;, [r area]);
[r release];
http://www.tapadoo.com
50. Objective-C Syntax
• Method calls are enclosed in square brackets
Rectangle *r = [[Rectangle alloc] init];
[r setWidth:3];
[r setLength:2];
NSLog(@quot;Area of r is %dquot;, [r area]);
[r release];
http://www.tapadoo.com
51. Objective-C Syntax
• Method calls are enclosed in square brackets
Rectangle *r = [[Rectangle alloc] init];
[r setWidth:3];
[r setLength:2];
NSLog(@quot;Area of r is %dquot;, [r area]);
[r release];
http://www.tapadoo.com
52. iPhone SDK Class Libraries
• Full-featured set of “Layers”
Cocoa Touch
• Very well documented, available through XCode -
Media
Examples for all layers
• Provide all interactions with hardware and O/S, Event
Core Services
Handling, etc.
Core OS
http://www.tapadoo.com
54. Anatomy of An iPhone App
• App is typically made up of 1 window, and many views
http://www.tapadoo.com
55. Anatomy of An iPhone App
• App is typically made up of 1 window, and many views
• A view is active on the window at any point in time
http://www.tapadoo.com
56. Anatomy of An iPhone App
• App is typically made up of 1 window, and many views
• A view is active on the window at any point in time
• App entry point is AppDelegate
http://www.tapadoo.com
57. Anatomy of An iPhone App
• App is typically made up of 1 window, and many views
• A view is active on the window at any point in time
• App entry point is AppDelegate
• -(void) applicationDidFinishLaunching (show your window here)
http://www.tapadoo.com
58. Anatomy of An iPhone App
• App is typically made up of 1 window, and many views
• A view is active on the window at any point in time
• App entry point is AppDelegate
• -(void) applicationDidFinishLaunching (show your window here)
• Main design pattern is Model/View/Controller
http://www.tapadoo.com
59. Anatomy of An iPhone App
• App is typically made up of 1 window, and many views
• A view is active on the window at any point in time
• App entry point is AppDelegate
• -(void) applicationDidFinishLaunching (show your window here)
• Main design pattern is Model/View/Controller
• So most of your work occurs in your Controller
http://www.tapadoo.com
60. Tools
Impressive set of tools
http://www.tapadoo.com
62. Tools: iPhone Simulator
• Simulator lets you run your application on your desktop
• Supports tap, drag, pinch, rotate etc.
• Necessity during development
http://www.tapadoo.com
63. Tools: Instruments
• Monitors your application as
it runs
• Can help pinpoint
performance issues, memory
leaks, unnecessary
allocations, etc. etc.
• Great for chasing memory
leaks!
http://www.tapadoo.com
65. Tools: Interface Builder
• Interface builder is click and drag tool for developing UI.
http://www.tapadoo.com
66. Tools: Interface Builder
• Interface builder is click and drag tool for developing UI.
• Couple of tricks to ease automatic assignment within Interface Builder
http://www.tapadoo.com
67. Tools: Interface Builder
• Interface builder is click and drag tool for developing UI.
• Couple of tricks to ease automatic assignment within Interface Builder
• To access individual controls, define them as IBOutlet
http://www.tapadoo.com
68. Tools: Interface Builder
• Interface builder is click and drag tool for developing UI.
• Couple of tricks to ease automatic assignment within Interface Builder
• To access individual controls, define them as IBOutlet
• To create methods that respond to events, define them as IBAction
http://www.tapadoo.com
69. Tools: Interface Builder
• Interface builder is click and drag tool for developing UI.
• Couple of tricks to ease automatic assignment within Interface Builder
• To access individual controls, define them as IBOutlet
• To create methods that respond to events, define them as IBAction
• ...you can then drag and drop within IB
http://www.tapadoo.com
71. Resources
• Apple Developer Portal for iPhone: http://developer.apple.com/iphone
• iPhone and Cocoa developers Ireland user group: http://www.xcake.org
• My Blog: http://www.tapadoo.com/blog
http://www.tapadoo.com
73. Summary
• Lots of great reasons to build for iPhone
• To go from zero to published app, there’s a number of things to have in place:
• Hardware: Intel Mac, iPhone or iPod touch for testing
• Knowledge: Objective-C, Tools, SDK, Signing
• Legal: App Store Contracts
http://www.tapadoo.com