Computer Science Large Practical:

                                Programming with Xcode

                                               Stephen Gilmore

                                               School of Informatics


                                          Friday 19th October, 2012




Stephen Gilmore (School of Informatics)      Computer Science Large Practical   Friday 19th October, 2012   1 / 47
News



         There will be no CSLP lecture next week. The next CSLP lecture will
         be on Friday 2nd November.

         As of Tuesday, Xcode is now available on all the Open Access Lab
         Apple Macs in the Main Library in George Square.
                 If you are developing on the Macs in the library you do not need to
                 install Xcode.
                 We see first how to install Xcode if you are working on your (Mac)
                 laptop.




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   2 / 47
Xcode is available from the App Store




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   3 / 47
Click to install




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   4 / 47
Supply your Apple ID password




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   5 / 47
The button will change to “Installing”




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   6 / 47
Foo




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   7 / 47
Accept the License Agreement




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   8 / 47
Some components may be updated




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   9 / 47
Requires system permission




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   10 / 47
Installing ...




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   11 / 47
Installing ...




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   12 / 47
Installation complete




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   13 / 47
Welcome screen




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   14 / 47
Create a new project




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   15 / 47
Many options, including iOS projects




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   16 / 47
Choose an OS X application




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   17 / 47
Choose a command-line tool




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   18 / 47
Choose options




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   19 / 47
Choose options




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   20 / 47
Choose Foundation for Objective-C




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   21 / 47
Can choose to create a git repository




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   22 / 47
Project main screen




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   23 / 47
Project has sample “Hello World” code




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   24 / 47
Autocompletion suggests options




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   25 / 47
Autocompletion suggests options




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   26 / 47
Autocompletion suggests options




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   27 / 47
Static analysis warns about code problems




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   28 / 47
Autocompletion works on literals too




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   29 / 47
Deliberately seeding a bug, overwriting a needed value




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   30 / 47
Static analysis warns about format string errors




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   31 / 47
Fixing the format string error




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   32 / 47
Running the code (first time)




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   33 / 47
Requires authentication




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   34 / 47
Build succeeded




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   35 / 47
Output in console




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   36 / 47
Using static analysis to find errors (choose Analyze)




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   37 / 47
Errors detected: value stored to ‘s’ is never read




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   38 / 47
Xcode decides to download libraries




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   39 / 47
Xcode decides to download libraries




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   40 / 47
Decide to initialise string




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   41 / 47
Looking for appropriate init method




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   42 / 47
Looking for appropriate init method (initWithString: ?)




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   43 / 47
Using “initWithString:” with a literal is redundant




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   44 / 47
Checking documentation




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   45 / 47
Code compiles without warnings — even with Analyze




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   46 / 47
Produces expected result




Stephen Gilmore (School of Informatics)   Computer Science Large Practical   Friday 19th October, 2012   47 / 47

Getting started with Xcode

  • 1.
    Computer Science LargePractical: Programming with Xcode Stephen Gilmore School of Informatics Friday 19th October, 2012 Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 1 / 47
  • 2.
    News There will be no CSLP lecture next week. The next CSLP lecture will be on Friday 2nd November. As of Tuesday, Xcode is now available on all the Open Access Lab Apple Macs in the Main Library in George Square. If you are developing on the Macs in the library you do not need to install Xcode. We see first how to install Xcode if you are working on your (Mac) laptop. Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 2 / 47
  • 3.
    Xcode is availablefrom the App Store Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 3 / 47
  • 4.
    Click to install StephenGilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 4 / 47
  • 5.
    Supply your AppleID password Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 5 / 47
  • 6.
    The button willchange to “Installing” Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 6 / 47
  • 7.
    Foo Stephen Gilmore (Schoolof Informatics) Computer Science Large Practical Friday 19th October, 2012 7 / 47
  • 8.
    Accept the LicenseAgreement Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 8 / 47
  • 9.
    Some components maybe updated Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 9 / 47
  • 10.
    Requires system permission StephenGilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 10 / 47
  • 11.
    Installing ... Stephen Gilmore(School of Informatics) Computer Science Large Practical Friday 19th October, 2012 11 / 47
  • 12.
    Installing ... Stephen Gilmore(School of Informatics) Computer Science Large Practical Friday 19th October, 2012 12 / 47
  • 13.
    Installation complete Stephen Gilmore(School of Informatics) Computer Science Large Practical Friday 19th October, 2012 13 / 47
  • 14.
    Welcome screen Stephen Gilmore(School of Informatics) Computer Science Large Practical Friday 19th October, 2012 14 / 47
  • 15.
    Create a newproject Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 15 / 47
  • 16.
    Many options, includingiOS projects Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 16 / 47
  • 17.
    Choose an OSX application Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 17 / 47
  • 18.
    Choose a command-linetool Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 18 / 47
  • 19.
    Choose options Stephen Gilmore(School of Informatics) Computer Science Large Practical Friday 19th October, 2012 19 / 47
  • 20.
    Choose options Stephen Gilmore(School of Informatics) Computer Science Large Practical Friday 19th October, 2012 20 / 47
  • 21.
    Choose Foundation forObjective-C Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 21 / 47
  • 22.
    Can choose tocreate a git repository Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 22 / 47
  • 23.
    Project main screen StephenGilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 23 / 47
  • 24.
    Project has sample“Hello World” code Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 24 / 47
  • 25.
    Autocompletion suggests options StephenGilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 25 / 47
  • 26.
    Autocompletion suggests options StephenGilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 26 / 47
  • 27.
    Autocompletion suggests options StephenGilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 27 / 47
  • 28.
    Static analysis warnsabout code problems Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 28 / 47
  • 29.
    Autocompletion works onliterals too Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 29 / 47
  • 30.
    Deliberately seeding abug, overwriting a needed value Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 30 / 47
  • 31.
    Static analysis warnsabout format string errors Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 31 / 47
  • 32.
    Fixing the formatstring error Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 32 / 47
  • 33.
    Running the code(first time) Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 33 / 47
  • 34.
    Requires authentication Stephen Gilmore(School of Informatics) Computer Science Large Practical Friday 19th October, 2012 34 / 47
  • 35.
    Build succeeded Stephen Gilmore(School of Informatics) Computer Science Large Practical Friday 19th October, 2012 35 / 47
  • 36.
    Output in console StephenGilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 36 / 47
  • 37.
    Using static analysisto find errors (choose Analyze) Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 37 / 47
  • 38.
    Errors detected: valuestored to ‘s’ is never read Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 38 / 47
  • 39.
    Xcode decides todownload libraries Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 39 / 47
  • 40.
    Xcode decides todownload libraries Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 40 / 47
  • 41.
    Decide to initialisestring Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 41 / 47
  • 42.
    Looking for appropriateinit method Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 42 / 47
  • 43.
    Looking for appropriateinit method (initWithString: ?) Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 43 / 47
  • 44.
    Using “initWithString:” witha literal is redundant Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 44 / 47
  • 45.
    Checking documentation Stephen Gilmore(School of Informatics) Computer Science Large Practical Friday 19th October, 2012 45 / 47
  • 46.
    Code compiles withoutwarnings — even with Analyze Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 46 / 47
  • 47.
    Produces expected result StephenGilmore (School of Informatics) Computer Science Large Practical Friday 19th October, 2012 47 / 47