iPhone Development <ul><li>Ahmed Essam </li></ul><ul><li>Software Research Engineer @ Unisoft </li></ul>
Agenda <ul><li>Mobile Application Development </li></ul><ul><li>iPhone Development methods </li></ul><ul><li>iPhone Develo...
Advice <ul><li>Be neutral when it comes to technology to be able to make the right decision  </li></ul>
Mobile Application <ul><li>There is three ways to do mobile applications </li></ul><ul><ul><li>Mobile Web Interface  </li>...
Mobile Web Applications <ul><li>This application is mostly connected, so most of the time user can’t handle it without int...
Java <ul><li>In some cases you can use Java but not all platforms supports Java as it is for instance </li></ul><ul><ul><l...
Flash <ul><li>Can be used if the application is all about interface </li></ul><ul><li>currently flash can be used to act l...
Native Applications <ul><li>You can do what ever you want to,except what the framework doesn’t allow you to do. </li></ul>
Native Development <ul><li>Windows Mobile SDK </li></ul><ul><ul><li>C#, C/C++ (Very easy to do apps on this SDK) </li></ul...
Why not Java <ul><li>Every device has its own characteristics and style </li></ul><ul><li>Java is annoying to protect the ...
Personally <ul><li>I like: </li></ul><ul><ul><li>Windows mobile (Low level guys will enjoy it) </li></ul></ul><ul><ul><li>...
iPhone Development Methods <ul><li>iPhone Web Applications </li></ul><ul><ul><li>Normal web site with specified for iPhone...
Jailbreak iPhone development <ul><li>I don’t know much about it but </li></ul><ul><ul><li>You can do really what every you...
Needed to develop for iPhone <ul><li>Knowledge of C </li></ul><ul><li>Mac OS X Intel based machine </li></ul><ul><li>iPhon...
iPhone Development tools <ul><li>Xcode </li></ul><ul><li>Interface Builder </li></ul><ul><li>Instruments </li></ul>
Objective C <ul><li>You can consider it Extension for C language </li></ul><ul><li>ObjC add more dynamicity to C Language ...
Objective C <ul><li>New concepts </li></ul><ul><ul><li>Class definition </li></ul></ul><ul><ul><li>Protocol implementation...
Classes and Objects <ul><li>Classes declare the state and behavior </li></ul><ul><li>State (class data) is instance variab...
Class and instance methods <ul><li>Instances responds to “Instance methods” </li></ul><ul><ul><li>-(id)init; </li></ul></u...
Message syntax (calling methods) <ul><li>Function calling in Objective C called message, this is to give more dynamicity t...
Objective C <ul><li>Dot Syntax </li></ul><ul><ul><li>It is only working in Objective C 2.0 </li></ul></ul><ul><ul><li>It i...
Objective C <ul><li>nil is equivalents to null  </li></ul><ul><li>Objective C Class has no operators overloading </li></ul...
iPhone frameworks <ul><li>Foundation  </li></ul><ul><li>UIKit </li></ul><ul><li>CoreGrphics </li></ul><ul><li>CFNetwork </...
iPhone Development <ul><li>It is true that Objective C is not as strong as any other language but the huge coverage of fra...
Demo
Refernces <ul><li>iPhone Development course form Stanford CS193P </li></ul><ul><li>Objective C developers guide </li></ul>...
Contact me <ul><li>Ahmed Essam Naiem </li></ul><ul><li>[email_address] </li></ul><ul><li>http://www.ahmed-essam.com </li><...
Upcoming SlideShare
Loading in …5
×

I Phone Development Presentation

2,945 views

Published on

Published in: Technology, News & Politics
1 Comment
0 Likes
Statistics
Notes
  • Excellent slide on Iphone development. I hope you won’t mind if I embed it at my site at : www.sprintringtones.org/

    Thanks. Hope to see more slides from you.
    Anita Gomez.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total views
2,945
On SlideShare
0
From Embeds
0
Number of Embeds
25
Actions
Shares
0
Downloads
158
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

I Phone Development Presentation

  1. 1. iPhone Development <ul><li>Ahmed Essam </li></ul><ul><li>Software Research Engineer @ Unisoft </li></ul>
  2. 2. Agenda <ul><li>Mobile Application Development </li></ul><ul><li>iPhone Development methods </li></ul><ul><li>iPhone Development tools </li></ul><ul><li>Introduction to Objective C </li></ul><ul><li>Introduction to iPhone SDK </li></ul><ul><li>Demo </li></ul>
  3. 3. Advice <ul><li>Be neutral when it comes to technology to be able to make the right decision </li></ul>
  4. 4. Mobile Application <ul><li>There is three ways to do mobile applications </li></ul><ul><ul><li>Mobile Web Interface </li></ul></ul><ul><ul><li>Develop for Java or Flash </li></ul></ul><ul><ul><li>Develop for the native platform </li></ul></ul>
  5. 5. Mobile Web Applications <ul><li>This application is mostly connected, so most of the time user can’t handle it without internet or cached history </li></ul><ul><li>Javascript provides reach function to access some hardware like GPS and other devices specific hardware </li></ul><ul><li>Developer doesn’t have much authority over the device, tied by the browser. </li></ul>
  6. 6. Java <ul><li>In some cases you can use Java but not all platforms supports Java as it is for instance </li></ul><ul><ul><li>BlackBerry </li></ul></ul><ul><ul><ul><li>You can use Java but it must be compiled using BB tools </li></ul></ul></ul><ul><ul><li>iPhone </li></ul></ul><ul><ul><ul><li>Doesn’t Support Java at all </li></ul></ul></ul><ul><ul><li>Android </li></ul></ul><ul><ul><ul><li>It is Java but not as J2ME developers used to. </li></ul></ul></ul>
  7. 7. Flash <ul><li>Can be used if the application is all about interface </li></ul><ul><li>currently flash can be used to act like real application, it has access to camera, GPS... etc </li></ul><ul><li>iPhone doesn’t support it. </li></ul>
  8. 8. Native Applications <ul><li>You can do what ever you want to,except what the framework doesn’t allow you to do. </li></ul>
  9. 9. Native Development <ul><li>Windows Mobile SDK </li></ul><ul><ul><li>C#, C/C++ (Very easy to do apps on this SDK) </li></ul></ul><ul><li>Android SDK </li></ul><ul><ul><li>C (Doing libraries that will be used by Java Apps), Java </li></ul></ul><ul><li>BlackBerry SDK </li></ul><ul><ul><li>Java ( You need to package the Java code using the SDK ) </li></ul></ul><ul><li>Nokia SDK </li></ul><ul><ul><li>Java, C++ ( I call it Symbian’s C++, needs some time to use it) </li></ul></ul>
  10. 10. Why not Java <ul><li>Every device has its own characteristics and style </li></ul><ul><li>Java is annoying to protect the user, “Do you allow this application to do .....?” </li></ul><ul><li>You can’t know the (keyboard or keypad) layout </li></ul><ul><li>Canvas or default system controls </li></ul><ul><li>When using canvas you have to handle little everything </li></ul><ul><li>Many features can’t be used. </li></ul>
  11. 11. Personally <ul><li>I like: </li></ul><ul><ul><li>Windows mobile (Low level guys will enjoy it) </li></ul></ul><ul><ul><li>iPhone (Most of the work REALLY done) </li></ul></ul><ul><ul><li>Android (I love the idea of Open Source) </li></ul></ul>
  12. 12. iPhone Development Methods <ul><li>iPhone Web Applications </li></ul><ul><ul><li>Normal web site with specified for iPhone using some JS functions that is provided by the Safari </li></ul></ul><ul><li>iPhone Native Applications </li></ul><ul><ul><li>Using Objective C </li></ul></ul><ul><ul><ul><li>iPhone SDK </li></ul></ul></ul><ul><ul><ul><li>Jailbreak iPhone development tools </li></ul></ul></ul>
  13. 13. Jailbreak iPhone development <ul><li>I don’t know much about it but </li></ul><ul><ul><li>You can do really what every you like all the undocumented functions are yours </li></ul></ul><ul><ul><li>You can’t publish such app in the apps store </li></ul></ul><ul><ul><li>You can publish such app in Cydia </li></ul></ul>
  14. 14. Needed to develop for iPhone <ul><li>Knowledge of C </li></ul><ul><li>Mac OS X Intel based machine </li></ul><ul><li>iPhone Developer program </li></ul><ul><li>iPhone or iPod touch </li></ul>
  15. 15. iPhone Development tools <ul><li>Xcode </li></ul><ul><li>Interface Builder </li></ul><ul><li>Instruments </li></ul>
  16. 16. Objective C <ul><li>You can consider it Extension for C language </li></ul><ul><li>ObjC add more dynamicity to C Language </li></ul><ul><li>Single inheritance from super class and protocols is used as interfaces </li></ul><ul><li>Totally new syntax but still can use C with it. </li></ul>
  17. 17. Objective C <ul><li>New concepts </li></ul><ul><ul><li>Class definition </li></ul></ul><ul><ul><li>Protocol implementation </li></ul></ul><ul><ul><li>Class messages </li></ul></ul><ul><ul><li>All objects are heap based & no stack objects </li></ul></ul><ul><ul><li>Classes and Instances are both objects </li></ul></ul><ul><ul><li>Class is a blue print to create instance </li></ul></ul>
  18. 18. Classes and Objects <ul><li>Classes declare the state and behavior </li></ul><ul><li>State (class data) is instance variables and behavior is methods </li></ul><ul><li>Instances are hidden, it can be accessed through getters and setters </li></ul>
  19. 19. Class and instance methods <ul><li>Instances responds to “Instance methods” </li></ul><ul><ul><li>-(id)init; </li></ul></ul><ul><ul><li>-(char*)getName; </li></ul></ul><ul><li>Class responds to “Static methods” </li></ul><ul><ul><li>+(id)alloc; </li></ul></ul><ul><ul><li>+(char*)getClassName; </li></ul></ul>
  20. 20. Message syntax (calling methods) <ul><li>Function calling in Objective C called message, this is to give more dynamicity to the language, some times if the method is not implemented the calling result will be nil = null </li></ul><ul><ul><li>[objectOfClass functionName]; </li></ul></ul><ul><ul><li>[objectOfClass functionName:Arg1]; </li></ul></ul><ul><li>Calling staic method </li></ul><ul><ul><li>[Class functionName]; </li></ul></ul><ul><ul><li>[Class functionName:Arg1]; </li></ul></ul><ul><li>Function also called selector, this is helpful in cases of passing the function name as parameter. </li></ul>
  21. 21. Objective C <ul><li>Dot Syntax </li></ul><ul><ul><li>It is only working in Objective C 2.0 </li></ul></ul><ul><ul><li>It is only used for properties of object </li></ul></ul><ul><li>Dynamic Casting </li></ul><ul><ul><li>Using type “id” , id is pointer to void “C Style void*” </li></ul></ul><ul><ul><li>id object = [Class new]; </li></ul></ul><ul><li>Static casting </li></ul><ul><ul><li>Class* object = [Class new]; </li></ul></ul>
  22. 22. Objective C <ul><li>nil is equivalents to null </li></ul><ul><li>Objective C Class has no operators overloading </li></ul><ul><li>Objective C Class has no constructors or destructors </li></ul><ul><li>Boolean type is, BOOL </li></ul><ul><ul><li>YES is TRUE </li></ul></ul><ul><ul><li>NO is FALSE </li></ul></ul><ul><li>Pointer to function in class called selector </li></ul><ul><ul><li>SEL method = [object event]; </li></ul></ul><ul><ul><li>[object setEvent:@selecyot(function:)]; </li></ul></ul><ul><ul><li>SEL function = @selector(function::); </li></ul></ul>
  23. 23. iPhone frameworks <ul><li>Foundation </li></ul><ul><li>UIKit </li></ul><ul><li>CoreGrphics </li></ul><ul><li>CFNetwork </li></ul><ul><li>CoreLocation </li></ul><ul><li>CoreData </li></ul><ul><li>ExternalAccessory </li></ul><ul><li>GameKit </li></ul>MapKit IOKit MediaPlayer AddressBook MobileCoreSerivces OpenGL Security StoreKit And many more
  24. 24. iPhone Development <ul><li>It is true that Objective C is not as strong as any other language but the huge coverage of frameworks that is provided by Apple makes it Ok to use such SDK </li></ul><ul><li>From My experience I can tell, that there is too many things already done for me in way that make me use it in no time considering other platforms </li></ul>
  25. 25. Demo
  26. 26. Refernces <ul><li>iPhone Development course form Stanford CS193P </li></ul><ul><li>Objective C developers guide </li></ul><ul><li>Google </li></ul>
  27. 27. Contact me <ul><li>Ahmed Essam Naiem </li></ul><ul><li>[email_address] </li></ul><ul><li>http://www.ahmed-essam.com </li></ul><ul><li>http://www.twitter.com/Neo_4583 </li></ul><ul><li>http://www.facebook.com/aessam </li></ul>

×