Your SlideShare is downloading. ×
Agile Iphone Development
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Agile Iphone Development

4,927
views

Published on

Introductory presentation to Agile iPhone Development

Introductory presentation to Agile iPhone Development

Published in: Technology

1 Comment
9 Likes
Statistics
Notes
  • Hi,
    Thanks for the presentation,

    Complexity is clear
    What Agile tools do you suggest to manage this mess!

    Salaam,
    Walid
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
4,927
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
1
Likes
9
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












































































  • Transcript

    • 1. Garage Days Return: Agile iPhone Development
    • 2. Do you remember this?
    • 3. Do you remember this?
    • 4. Do you remember this?
    • 5. A kid with a good idea...
    • 6. Manic Miner
    • 7. The big guys...
    • 8. But...
    • 9. These changed the rules...
    • 10. What do you need to start?
    • 11. A Mac
    • 12. XCode
    • 13. An iPhone...
    • 14. Books
    • 15. But...
    • 16. OMG It’s ObjectiveC!
    • 17. Bigino ObjectiveC
    • 18. Smalltalk
    • 19. C
    • 20. Classes: declaration #import <Cocoa/Cocoa.h> @interface Photo : NSObject { NSString* caption; NSString* photographer; } - (NSString*) caption; - (NSString*) photographer; - (void) setCaption: (NSString*)input; - (void) setPhotographer: (NSString*)input; @end
    • 21. Classes: implementation #import "Photo.h" @implementation Photo // ... - (NSString*) caption { return caption; } - (NSString*) photographer { return photographer; } @end
    • 22. Method Invocation photo = [[Photo alloc] init]; [photo setCaption:@"Day at the Beach"]; output = [photo caption];
    • 23. First Reaction
    • 24. The Same in Java photo = new Photo(); photo.setCaption("Day at the Beach"); output = photo.caption();
    • 25. In ObjectiveC photo = [[Photo alloc] init]; [photo setCaption:@"Day at the Beach"]; output = [photo caption];
    • 26. Message Passing [obj method:parameter];
    • 27. Multiple Parameters - (void)insertObject:(id)anObject atIndex:(NSUInteger)index; //... [array insertObject:@"Hello, World!" atIndex:5];
    • 28. If you want... - (void)insertObject:(id)anObject :(NSUInteger)index; //... [array insertObject:@"Hello, World!" :5];
    • 29. Dynamic Invocation (id)anObject = [ factory getFor:par1 ] [array foo]; [array bar];
    • 30. No garbage collection!
    • 31. Counter based
    • 32. message counter alloc +1 copy +1 retain +1 release -1 autorelease -1
    • 33. If you’ll use an object take ownership retain
    • 34. If you own an object should release it release
    • 35. If you alloc or copy an object you own it release
    • 36. Collections take ownership
    • 37. - (void)printHello { NSString *string; string = [[NSString alloc] initWithString:@"Hello"]; NSLog(string); [string release]; }
    • 38. - (void)printHello { NSString *string; string = [NSString stringWithFormat:@"Hello"]; NSLog(string); }
    • 39. - (void)printWindowTitle { NSString *string; string = [myWindow title]; NSLog(string); }
    • 40. NSMutableArray *array; NSUInteger i; // ... for (i = 0; i < 10; i++) { NSNumber *allocedNumber = [[NSNumber alloc] initWithInteger: i]; [array addObject:allocedNumber]; [allocedNumber release]; }
    • 41. Be Careful!
    • 42. What about the tests?
    • 43. Unit Tests...
    • 44. Former SenTestingKit OCUnit
    • 45. TestCase Definition #import <SenTestingKit/SenTestingKit.h> #import "RpnCalculator.h" @interface RpnCalculatorTestCase : SenTestCase { RpnCalculator* rpnCalculator; } @end
    • 46. TestCase Implementation @implementation RpnCalculatorTestCase -(void)setUp{ rpnCalculator = [[RpnCalculator alloc]init]; } -(void)tearDown{ [rpnCalculator release]; } -(void)testShouldDisplayTwoNumbersWhenNumbersAreSeparatedByEnter{ [rpnCalculator put:@"1"]; [rpnCalculator put:@"enter"]; [rpnCalculator put:@"2"]; STAssertEqualObjects(@"1n2",rpnCalculator.display,nil); }
    • 47. TestCase Implementation #define STAssertNil(a1, description, ...) #define STAssertNotNil(a1, description, ...) #define STAssertTrue(expression, description, ...) #define STAssertFalse(expression, description, ...) #define STAssertEqualObjects(a1, a2, description, ...) #define STAssertEquals(a1, a2, description, ...) #define STFail(description, ...) #define STAssertTrueNoThrow(expression, description, ...) #define STAssertFalseNoThrow(expression, description, ...) //....
    • 48. XCode Integration
    • 49. XCode Integration
    • 50. XCode in a Nutshell
    • 51. Useful Shortcuts Esc - Name Completion
    • 52. Useful Shortcuts ⌘S - Save
    • 53. Useful Shortcuts ⌘B - Build
    • 54. Useful Shortcuts ⌥⌘↑ - HeaderSource
    • 55. Conclusions
    • 56. The Market Asks For Apps
    • 57. The Market Asks For Apps
    • 58. More Apps...
    • 59. More Apps...
    • 60. More Apps!
    • 61. Lot to Improve
    • 62. Be Good Kids:
    • 63. Test First!
    • 64. Questions?
    • 65. Coding Dojo Rules
    • 66. Randori
    • 67. Silence
    • 68. Suggest
    • 69. KataRpnCalculator
    • 70. 20 5 / => (20/5) = 4 4 2 + 3 - => (4+2)-3 = 3 3 5 8 * 7 + * => 3*((5*8)+7) = 141
    • 71. Let’s Start!

    ×