SlideShare uma empresa Scribd logo
1 de 221
EINFÜHRUNG IN DIE




   Entwicklung
       http://pomcast.biz
     [iPhone developers]
WER IST DIESER STUFF MC?




            flickr.com/fasttorwa
WER IST DIESER STUFF MC?




            flickr.com/fasttorwa
WER IST DIESER STUFF MC?

Mai 2005: Pomcast.fr




                       flickr.com/fasttorwa
WER IST DIESER STUFF MC?

Mai 2005: Pomcast.fr

  Podcast #1 über Apple auf Französisch




                       flickr.com/fasttorwa
WER IST DIESER STUFF MC?

Mai 2005: Pomcast.fr

  Podcast #1 über Apple auf Französisch

Später: Deutsch, Englisch, Spanisch




                         flickr.com/fasttorwa
WER IST DIESER STUFF MC?

Mai 2005: Pomcast.fr

  Podcast #1 über Apple auf Französisch

Später: Deutsch, Englisch, Spanisch

Video Interviews




                         flickr.com/fasttorwa
WER IST DIESER STUFF MC?

Mai 2005: Pomcast.fr

  Podcast #1 über Apple auf Französisch

Später: Deutsch, Englisch, Spanisch

Video Interviews




                         flickr.com/fasttorwa
WER IST DIESER STUFF MC?

Mai 2005: Pomcast.fr

  Podcast #1 über Apple auf Französisch

Später: Deutsch, Englisch, Spanisch

Video Interviews



                           StuFF mc?
                         flickr.com/fasttorwa
flickr.com/fasttorwa
WER IST DIESER MANUEL CARRA




           flickr.com/fasttorwa
WER IST DIESER MANUEL CARRA

Spanier in Belgien geboren...




                         flickr.com/fasttorwa
WER IST DIESER MANUEL CARRA

Spanier in Belgien geboren...

Wohnaft in Deutschland seit 2003




                         flickr.com/fasttorwa
WER IST DIESER MANUEL CARRA

Spanier in Belgien geboren...

Wohnaft in Deutschland seit 2003

Deutsche “Frau” + 2x2sprachige Töchter




                         flickr.com/fasttorwa
WER IST DIESER MANUEL CARRA

Spanier in Belgien geboren...

Wohnaft in Deutschland seit 2003

Deutsche “Frau” + 2x2sprachige Töchter

Beruflich Informatiker seit 1997 als...




                          flickr.com/fasttorwa
WER IST DIESER MANUEL CARRA

Spanier in Belgien geboren...

Wohnaft in Deutschland seit 2003

Deutsche “Frau” + 2x2sprachige Töchter

Beruflich Informatiker seit 1997 als...

  Microsoft Entwickler...


                          flickr.com/fasttorwa
MOMENT... MICROSOFT???
STUFF MC: “JETZT MIT
COCOA® POWERS INSIDE”




              Source: moillusions.com
STUFF MC: “JETZT MIT
COCOA® POWERS INSIDE”




              Source: moillusions.com
STUFF MC: “JETZT MIT
COCOA® POWERS INSIDE”




              Source: moillusions.com
STUFF MC: “JETZT MIT
COCOA® POWERS INSIDE”

Seit Sommer ’08
iPhone Entwickler




                    Source: moillusions.com
STUFF MC: “JETZT MIT
COCOA® POWERS INSIDE”

Seit Sommer ’08
iPhone Entwickler

Familie zu füttern :)




                        Source: moillusions.com
STUFF MC: “JETZT MIT
COCOA® POWERS INSIDE”

Seit Sommer ’08
iPhone Entwickler

Familie zu füttern :)

Manchmal ist Cocoa
wie Windows...




                        Source: moillusions.com
STUFF MC: “JETZT MIT
COCOA® POWERS INSIDE”

Seit Sommer ’08
iPhone Entwickler

Familie zu füttern :)

Manchmal ist Cocoa
wie Windows...

Learning Curve ist
nicht soooo einfach...

                         Source: moillusions.com
Wie viele hier haben...


• Grundkenntnisse in O.O. Programmierung?
• schon mit .Net / Java entwickelt?
• schon für Mac / iPhone entwickelt?
FRÜHER MIT .NET/C#
FRÜHER MIT .NET/C#

Der Compiler war mein Schutz-Engel
FRÜHER MIT .NET/C#

Der Compiler war mein Schutz-Engel

  Kompiliert == Funktioniert...
FRÜHER MIT .NET/C#

Der Compiler war mein Schutz-Engel

  Kompiliert == Funktioniert...



Speicherverwaltung? Wie meinst du das?
FRÜHER MIT .NET/C#

Der Compiler war mein Schutz-Engel

  Kompiliert == Funktioniert...



Speicherverwaltung? Wie meinst du das?

Visual Studio.NET!!!
FRÜHER MIT .NET/C#
FRÜHER MIT .NET/C#
FRÜHER MIT .NET/C#
FRÜHER MIT .NET/C#
COCOA / OBJ. C


 “Ich mag dich trotzdem”
FRAMEWORK: COCOA
FRAMEWORK: COCOA
 Mac OS X

    Cocoa

    Media

 Core Services

   Core OS
FRAMEWORK: COCOA
 Mac OS X

    Cocoa
                                       iPhone OS
    Media
                                       Cocoa Touch
 Core Services
                                          Media
   Core OS                             Core Services

                                         Core OS




             Thursday, April 2, 2009
Core OS
iPhone OS
                OS X Kernel   Power Mgmt
Cocoa Touch
                Mach 3.0      Keychain
   Media
                BSD           Certificates
Core Services   Sockets       File System
                Security      Bonjour
  Core OS
Core Services
iPhone OS
                Collections    Core Location
Cocoa Touch
                Address Book   Net Services
   Media
                Networking     Threading
Core Services   File Access    Preferences
                SQLite         URL utilities
  Core OS
Media
iPhone OS
                Core Audio       JPG, PNG, TIFF
Cocoa Touch
                OpenAL           PDF
   Media
                Audio Mixing     Quartz (2D)
Core Services   Audio Recording Core Animation
                Video Playback   OpenGL ES
  Core OS
Cocoa Touch
iPhone OS
                Multi-Touch Events   Alerts
Cocoa Touch
                Multi-Touch Controls Web Views
   Media
                Accelerometer        People Picker
Core Services   View Hierarchy       Image Picker
                Localization         Controllers
  Core OS
COCOA TOUCH =
COCOA TOUCH =

NSString
COCOA TOUCH =

NSString

NSArray
COCOA TOUCH =

NSString

NSArray

NSUserDefault
COCOA TOUCH =

NSString

NSArray

NSUserDefault

NSXML
COCOA TOUCH =

NSString

NSArray

NSUserDefault
______
NSXML
COCOA TOUCH =

NSString

NSArray

NSUserDefault
______
NSXML

  TouchXML (Google ist dein Freund...)
COCOA TOUCH =

NSString

NSArray

NSUserDefault
______
NSXML

  TouchXML (Google ist dein Freund...)

... (und ...++?: Google ist dein Freund)
COCOA TOUCH =

                             FO
NSString

                                    U
NSArray
                                       N
                                           DA
NSUserDefault
                                             TI
______
NSXML
                                               ON
  TouchXML (Google ist dein Freund...)

... (und ...++?: Google ist dein Freund)
FOUNDATION + ...?
FOUNDATION + ...?
FOUNDATION + ...?
FOUNDATION + ...?
FOUNDATION + ...?
FOUNDATION + ...?
FOUNDATION + ...?
FOUNDATION + ...?




UISearchBar
FOUNDATION + ...?



                            UIPickerView




UISearchBar
FOUNDATION + ...?



                            UIPickerView




UISearchBar
FOUNDATION + ...?



                            UIPickerView




UISearchBar
FOUNDATION + ...?



                UIKit                  UIPickerView
                 (Viel coolerer Name
                     - und Prefix -
                       als AppKit)
UISearchBar
TOOLS: XCODE & IB
TOOLS: XCODE & IB
TOOLS: XCODE & IB
TOOLS: XCODE & IB
TOOLS: XCODE & IB
TOOLS: XCODE & IB
TOOLS: XCODE & IB

  Jean-Marie Hullot
TOOLS: XCODE & IB
Interface Builder ist zum 1. Mal 1988 als Teil von
NeXTSTEP 0.8 in Erscheinung getreten. Es wurde
von Jean-Marie Hullot erfunden und entwickelt.
TOOLS: XCODE & IB
Interface Builder ist zum 1. Mal 1988 als Teil von
NeXTSTEP 0.8 in Erscheinung getreten. Es wurde
von Jean-Marie Hullot erfunden und entwickelt.
TOOLS: XCODE & IB
Interface Builder ist zum 1. Mal 1988 als Teil von
NeXTSTEP 0.8 in Erscheinung getreten. Es wurde
von Jean-Marie Hullot erfunden und entwickelt.
INTERFACE BUILDER 3.1
INTERFACE BUILDER 3.1

Library & Inspektor
INTERFACE BUILDER 3.1

Library & Inspektor
INTERFACE BUILDER 3.1

Library & Inspektor

Dokument Window
INTERFACE BUILDER 3.1

Library & Inspektor

Dokument Window

Window, views, ...
SPRACHE: OBJECTIVE C
SPRACHE: OBJECTIVE C


Superset von C... mit Objects
SPRACHE: OBJECTIVE C


Superset von C... mit Objects

  @interface, @implementation
SPRACHE: OBJECTIVE C


Superset von C... mit Objects

  @interface, @implementation

Die “Square bracket gang”!
SPRACHE: OBJECTIVE C


Superset von C... mit Objects

  @interface, @implementation

Die “Square bracket gang”!
SPRACHE: OBJECTIVE C


Superset von C... mit Objects

  @interface, @implementation

Die “Square bracket gang”!

“Loosely Typed”, d.h. “Welche Compiler?” :)
+-[]:
+-[]:

- (int)count; // instance Method
+-[]:

- (int)count; // instance Method

+ (NSString *)stringWithFormat:...; // class Method
+-[]:

- (int)count; // instance Method

+ (NSString *)stringWithFormat:...; // class Method


Methodenaufruf:
        • [receiver tuDas]
+-[]:

- (int)count; // instance Method

+ (NSString *)stringWithFormat:...; // class Method


Methodenaufruf:
        • [receiver tuDas]
+-[]:

- (int)count; // instance Method

+ (NSString *)stringWithFormat:...; // class Method


Methodenaufruf:
        • [receiver tuDas]

        • [receiver tuDas:aberSo]
+-[]:

- (int)count; // instance Method

+ (NSString *)stringWithFormat:...; // class Method


Methodenaufruf:
        • [receiver tuDas]

        • [receiver tuDas:aberSo]
+-[]:

- (int)count; // instance Method

+ (NSString *)stringWithFormat:...; // class Method


Methodenaufruf:
        • [receiver tuDas]

        • [receiver tuDas:aberSo]

        • [receiver tuDas:aberSo undMit:jemand]
+-[]:

- (int)count; // instance Method

+ (NSString *)stringWithFormat:...; // class Method


Methodenaufruf:
        • [receiver tuDas]

        • [receiver tuDas:aberSo]

        • [receiver tuDas:aberSo undMit:jemand]
HEADER DATEI
HEADER DATEI
HEADER DATEI
     @interface Person : NSObject
     {
       // instance variables
         NSString *name;
         int age;
     }

     // method declarations
     - (NSString *)name;
     - (void)setName:(NSString *)value;
     - (int)age;
     - (void)setAge:(int)age;
     - (BOOL)canLegallyVote;

     - (void)castBallot;
     @end
HEADER DATEI
     @interface Person : NSObject
     {
       // instance variables
         NSString *name;
         int age;
     }

     // method declarations
     - (NSString *)name;
     - (void)setName:(NSString *)value;
     - (int)age;
     - (void)setAge:(int)age;
     - (BOOL)canLegallyVote;

     - (void)castBallot;
     @end
HEADER DATEI
                                    @interface Person : NSObject
                                    {
                                      // instance variables
                                        NSString *name;
                                        int age;
                                    }

                                    // method declarations
                                    - (NSString *)name;
                                    - (void)setName:(NSString *)value;
                                    - (int)age;
                                    - (void)setAge:(int)age;
                                    - (BOOL)canLegallyVote;
Person *myPerson = [Person new];
                                    - (void)castBallot;
NSString *name = [myPerson name];
                                    @end
[myPerson setName:@“New Name”];
HEADER DATEI
                                    @interface Person : NSObject
                                    {
                                      // instance variables
                                        NSString *name;
                                        int age;
                                    }

                                    // method declarations
                                    - (NSString *)name;
                                    - (void)setName:(NSString *)value;
                                    - (int)age;
                                    - (void)setAge:(int)age;
                                    - (BOOL)canLegallyVote;
Person *myPerson = [Person new];
                                    - (void)castBallot;
NSString *name = [myPerson name];
                                    @end
[myPerson setName:@“New Name”];
HEADER DATEI
                                    @interface Person : NSObject
                                    {
                                      // instance variables
                                        NSString *name;
                                        int age;
                                    }

                                    // method declarations
                                    - (NSString *)name;
                                    - (void)setName:(NSString *)value;
                                    - (int)age;
                                    - (void)setAge:(int)age;
                                    - (BOOL)canLegallyVote;
Person *myPerson = [Person new];
                                    - (void)castBallot;
NSString *name = [myPerson name];
                                    @end
[myPerson setName:@“New Name”];
HEADER DATEI
                                    @interface Person : NSObject
                                    {
                                      // instance variables
                                        NSString *name;
                                        int age;
                                    }

                                    // method declarations
                                    - (NSString *)name;
                                    - (void)setName:(NSString *)value;
                                    - (int)age;
                                    - (void)setAge:(int)age;
                                    - (BOOL)canLegallyVote;
Person *myPerson = [Person new];
                                    - (void)castBallot;
NSString *name = [myPerson name];
                                    @end
[myPerson setName:@“New Name”];
HEADER DATEI
                                    @interface Person : NSObject
                                    {
                                      // instance variables
                                        NSString *name;
                                        int age;
                                    }

                                    // method declarations
                                    - (NSString *)name;
                                    - (void)setName:(NSString *)value;
                                    - (int)age;
                                    - (void)setAge:(int)age;
                                    - (BOOL)canLegallyVote;
Person *myPerson = [Person new];
                                    - (void)castBallot;
NSString *name = [myPerson name];
                                    @end
[myPerson setName:@“New Name”];
HEADER DATEI
                                    @interface Person : NSObject
                                    {
                                      // instance variables
                                        NSString *name;
                                        int age;
                                    }

                                    // method declarations
                                    - (NSString *)name;
                                    - (void)setName:(NSString *)value;
                                    - (int)age;
                                    - (void)setAge:(int)age;
                                    - (BOOL)canLegallyVote;
Person *myPerson = [Person new];
                                    - (void)castBallot;
NSString *name = [myPerson name];
                                    @end
[myPerson setName:@“New Name”];
HEADER DATEI
     @interface Person : NSObject
     {
       // instance variables
         NSString *name;
         int age;
     }

     // method declarations
     - (NSString *)name;
     - (void)setName:(NSString *)value;
     - (int)age;
     - (void)setAge:(int)age;
     - (BOOL)canLegallyVote;

     - (void)castBallot;
     @end
HEADER DATEI
     @interface Person : NSObject
     {
       // instance variables
         NSString *name;
         int age;
     }

     // method declarations
                   name
     - (NSString *)name;
     - (void)setName:(NSString *)value;
            age
     - (int)age;
     - (void)setAge:(int)age;
             canLegallyVote
     - (BOOL)canLegallyVote;

     - (void)castBallot;
     @end
HEADER DATEI
     @interface Person : NSObject
     {
       // instance variables
         NSString *name;
         int age;
     }

      // method declarations (ObjC 2.0)
      //property declarations
                    name
      - (NSString *)name;
      - (void)setName:(NSString *)value;
     @property int age;
             age
      - (int)age;
     @property NSString *name
      - (void)setAge:(int)age;
     @property (readonly) canLegallyVote;
              canLegallyVote
      - (BOOL)canLegallyVote;

     - (void)castBallot;
     @end
IMMMPLEMATION
IMMMPLEMATION
IMMMPLEMATION
      #import quot;Person.hquot;

      @implementation Person

      - (int)age {
        return age;
      }
      - (void)setAge:(int)value {
        age = value;
      }

      - (BOOL)canLegallyVote {
        return ([self age] >= 18);
      }

      @end
IMMMPLEMATION
      #import quot;Person.hquot;

      @implementation Person

             age
      - (int)age {
        return age;
      }
      - (void)setAge:(int)value {
        age = value;
      }

               canLegallyVote
      - (BOOL)canLegallyVote {
        return ([self age] >= 18);
      }

      @end
IMMMPLEMATION
      #import quot;Person.hquot;

      @implementation Person

             age
      - (int)age {
      @synthetise name;
        return age;
      }
      - (void)setAge:(int)value {
        age = value;
      }

               canLegallyVote
      - (BOOL)canLegallyVote {
        return ([self age] >= 18);
      }

      @end
APP DELEGATE
APP DELEGATE

UIApplicationDelegate
APP DELEGATE

UIApplicationDelegate
Delegate? “Lass mich wissen, wenn...”
APP DELEGATE

  UIApplicationDelegate
  Delegate? “Lass mich wissen, wenn...”




- (void)applicationDidFinishLaunching:(UIApplication *)application;
APP DELEGATE

  UIApplicationDelegate
  Delegate? “Lass mich wissen, wenn...”




- (void)applicationDidFinishLaunching:(UIApplication *)application;

- (void)applicationWillTerminate:(UIApplication *)application;
APP DELEGATE

  UIApplicationDelegate
  Delegate? “Lass mich wissen, wenn...”




- (void)applicationDidFinishLaunching:(UIApplication *)application;

- (void)applicationWillTerminate:(UIApplication *)application;

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application;
TARGET-ACTION
TARGET-ACTION
TARGET-ACTION

UIControlEventValueChanged
TARGET-ACTION

UIControlEventValueChanged




                                Controller
                                (myObject)
TARGET-ACTION

UIControlEventValueChanged




                                                    Controller
                                                    (myObject)
                             - (void)updateNumber
TARGET-ACTION

UIControlEventValueChanged




                                                    Controller
                                                    (myObject)
                             - (void)updateNumber



target:     myObject
action:     @selector(updateNumber)
event:      UIControlEventValueChanged
TARGET-ACTION

UIControlEventValueChanged




                                                                   Controller
                                                                   (myObject)
                                - (void)updateNumber


 - (IBAction)updateNumber;
target:        myObject
 - (IBAction)updateNumber:(id)sender;
action:        @selector(updateNumber)
 - (IBAction)updateNumber:(id)sender withEvent:(UIEvent *)event;
event:         UIControlEventValueChanged
TARGET-ACTION

                                                         DEMO!
UIControlEventValueChanged
                                                    “SLIDE ME BABY”



                                                                   Controller
                                                                   (myObject)
                                - (void)updateNumber


 - (IBAction)updateNumber;
target:        myObject
 - (IBAction)updateNumber:(id)sender;
action:        @selector(updateNumber)
 - (IBAction)updateNumber:(id)sender withEvent:(UIEvent *)event;
event:         UIControlEventValueChanged
TARGET-ACTION

UIControlEventValueChanged




                                                                   Controller
                                                                   (myObject)
                                - (void)updateNumber


 - (IBAction)updateNumber;
target:        myObject
 - (IBAction)updateNumber:(id)sender;
action:        @selector(updateNumber)
 - (IBAction)updateNumber:(id)sender withEvent:(UIEvent *)event;
event:         UIControlEventValueChanged
MEMORY MANAGEMENT
(NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...)
MEMORY MANAGEMENT
       (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...)




Person *person = [[Person alloc] init];
MEMORY MANAGEMENT
       (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...)




Person *person = [[Person alloc] init];

...
MEMORY MANAGEMENT
       (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...)




Person *person = [[Person alloc] init];

...
                                                 Allocation Destruction
                                           C      malloc        free
                                          ObjC    alloc       dealloc
                                                             (release)
MEMORY MANAGEMENT
       (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...)




Person *person = [[Person alloc] init];

...
                                                 Allocation Destruction
[person release];                          C      malloc        free
                                          ObjC    alloc       dealloc
                                                             (release)
MEMORY MANAGEMENT
       (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...)




Person *person = [[Person alloc] init];

...
                                                 Allocation Destruction
[person release];                          C      malloc        free
                                          ObjC    alloc       dealloc
                                                             (release)
MEMORY MANAGEMENT
       (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...)




Person *person = [[Person alloc] init];

...
                                                 Allocation Destruction
[person release];                          C      malloc        free
                                          ObjC    alloc       dealloc
                                                             (release)




 Retain Count:
MEMORY MANAGEMENT
       (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...)




Person *person = [[Person alloc] init];

...
                                                 Allocation Destruction
[person release];                          C      malloc        free
                                          ObjC    alloc       dealloc
                                                             (release)




 Retain Count:
MEMORY MANAGEMENT
       (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...)




Person *person = [[Person alloc] init];

...
                                                 Allocation Destruction
[person release];                          C      malloc        free
                                          ObjC    alloc       dealloc
                                                             (release)
[person tuWas];



 Retain Count:
MEMORY MANAGEMENT
       (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...)




Person *person = [[Person alloc] init];

...
                                                 Allocation Destruction
[person release];                          C      malloc        free
                                          ObjC    alloc       dealloc
                                                             (release)
                       // CRASH!
[person tuWas];



 Retain Count:
MEMORY MANAGEMENT
       (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...)




Person *person = [[Person alloc] init];

...
                                                 Allocation Destruction
[person release];                          C      malloc        free
                                          ObjC    alloc       dealloc
person = nil;
                                                             (release)
                       // CRASH!
[person tuWas];



 Retain Count:
MEMORY MANAGEMENT
       (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...)




Person *person = [[Person alloc] init];

...
                                                 Allocation Destruction
[person release];                          C      malloc        free
                                          ObjC    alloc       dealloc
person = nil;
                                                             (release)
                    // // CRASH!
                       Keine Effekt!
[person tuWas];



 Retain Count:
AUTO-RELEASE
(IMMER NOCH KEIN GARBAGE COLLECTION ABER FAST...)
AUTO-RELEASE
     (IMMER NOCH KEIN GARBAGE COLLECTION ABER FAST...)




Beispiel mit Strings

string = [[NSString alloc] initWithFormat:@”Hi %@”, person]
[label setText:string];
AUTO-RELEASE
     (IMMER NOCH KEIN GARBAGE COLLECTION ABER FAST...)




Beispiel mit Strings

string = [[NSString alloc] initWithFormat:@”Hi %@”, person]
[label setText:string];
[string release];
AUTO-RELEASE
     (IMMER NOCH KEIN GARBAGE COLLECTION ABER FAST...)




Beispiel mit Strings

string = [[NSString alloc] initWithFormat:@”Hi %@”, person]
[label setText:string];
[string release];

geht auch so

string = [NSString stringWithFormat:@”Hi %@”, person];
[label setText:string];
AUTO-RELEASE
     (IMMER NOCH KEIN GARBAGE COLLECTION ABER FAST...)




Beispiel mit Strings

string = [[NSString alloc] initWithFormat:@”Hi %@”, person]
[label setText:string];
[string release];

geht auch so

string = [NSString stringWithFormat:@”Hi %@”, person];
[label setText:string];
// brauche ich nicht...
WAS IST EIN VIEW?
WAS IST EIN VIEW?

Rechteckige Zone auf dem Bildschirm
WAS IST EIN VIEW?

Rechteckige Zone auf dem Bildschirm

Subklasse von UIResponder (Event handling class)
WAS IST EIN VIEW?

Rechteckige Zone auf dem Bildschirm

Subklasse von UIResponder (Event handling class)

Views hierarchisch arrangiert.
WAS IST EIN VIEW?

Rechteckige Zone auf dem Bildschirm

Subklasse von UIResponder (Event handling class)

Views hierarchisch arrangiert.

Jede HAT eine Superview und KANN Subviews haben.
WAS IST EIN VIEW?

  Rechteckige Zone auf dem Bildschirm

  Subklasse von UIResponder (Event handling class)

  Views hierarchisch arrangiert.

  Jede HAT eine Superview und KANN Subviews haben.
- (void)addSubview:(UIView *)view;
WAS IST EIN VIEW?

  Rechteckige Zone auf dem Bildschirm

  Subklasse von UIResponder (Event handling class)

  Views hierarchisch arrangiert.

  Jede HAT eine Superview und KANN Subviews haben.
- (void)addSubview:(UIView *)view;
- (void)removeFromSuperview;
GEOMETRY
GEOMETRY
GEOMETRY
GEOMETRY
GEOMETRY




CGRectMake (x, y, width, height)
CGRect rect = CGRectMake (80.0, 54.0, 144.0, 72.0);
GEOMETRY



                                                       DEMO!
                                                  “CLICK ME BABY”




CGRectMake (x, y, width, height)
CGRect rect = CGRectMake (80.0, 54.0, 144.0, 72.0);
CUSTOM VIEWS
CUSTOM VIEWS

Override - (void)drawRect:(CGRect)rect;
CUSTOM VIEWS

Override - (void)drawRect:(CGRect)rect;

CGContextMoveToPoint
CUSTOM VIEWS

Override - (void)drawRect:(CGRect)rect;

CGContextMoveToPoint

CGContextAddLineToPoint
CUSTOM VIEWS

Override - (void)drawRect:(CGRect)rect;

CGContextMoveToPoint

CGContextAddLineToPoint

CGContextClosePath
CUSTOM VIEWS

Override - (void)drawRect:(CGRect)rect;

CGContextMoveToPoint

CGContextAddLineToPoint

CGContextClosePath
CUSTOM VIEWS

Override - (void)drawRect:(CGRect)rect;

CGContextMoveToPoint

CGContextAddLineToPoint

CGContextClosePath



Override touchesBegan...
CUSTOM VIEWS

Override - (void)drawRect:(CGRect)rect;

CGContextMoveToPoint

CGContextAddLineToPoint

CGContextClosePath



Override touchesBegan...
BESSER ALS CORE
  ANIMATION
BESSER ALS CORE
          ANIMATION

UIViewAnimation
BESSER ALS CORE
                ANIMATION

UIViewAnimation
[UIView beginAnimations:nil context:nil];
BESSER ALS CORE
                ANIMATION

UIViewAnimation
[UIView beginAnimations:nil context:nil];

CGRect polygonFrame = polygonView.frame;
BESSER ALS CORE
                ANIMATION

UIViewAnimation
[UIView beginAnimations:nil context:nil];

CGRect polygonFrame = polygonView.frame;

polygonFrame.origin.y += 200;
BESSER ALS CORE
                ANIMATION

UIViewAnimation
[UIView beginAnimations:nil context:nil];

CGRect polygonFrame = polygonView.frame;

polygonFrame.origin.y += 200;

polygonView.frame = polygonFrame;
BESSER ALS CORE
                ANIMATION

UIViewAnimation
[UIView beginAnimations:nil context:nil];

CGRect polygonFrame = polygonView.frame;

polygonFrame.origin.y += 200;

polygonView.frame = polygonFrame;

[UIView commitAnimations];
BESSER ALS CORE
                ANIMATION

UIViewAnimation
[UIView beginAnimations:nil context:nil];

CGRect polygonFrame = polygonView.frame;

polygonFrame.origin.y += 200;

polygonView.frame = polygonFrame;

[UIView commitAnimations];
BESSER ALS CORE
                ANIMATION

UIViewAnimation
[UIView beginAnimations:nil context:nil];

CGRect polygonFrame = polygonView.frame;

polygonFrame.origin.y += 200;

polygonView.frame = polygonFrame;

[UIView commitAnimations];

                                            Demo
                                              6
SAVING STATE




           Demo
             7
SAVING STATE

NSUserDefaults




                      Demo
                        7
SAVING STATE

NSUserDefaults

XML WebServices (Rest, Json, ...)




                                    Demo
                                      7
SAVING STATE

NSUserDefaults

XML WebServices (Rest, Json, ...)

SQLite DB (oder z.B. BaseTen)




                                    Demo
                                      7
SAVING STATE

NSUserDefaults

XML WebServices (Rest, Json, ...)

SQLite DB (oder z.B. BaseTen)




                                    Demo
                                      7
SAVING STATE

NSUserDefaults

XML WebServices (Rest, Json, ...)

SQLite DB (oder z.B. BaseTen)



Wäre nett, wenn das Programm

sich errinnert, ...
                                    Demo
                                      7
EIN IPHONE IST KEIN MAC

        3.5” != 30”
     ( 320x480 != 2560x1600 )
BEISPIEL: MAIL
VIEWS & VIEW CONTROLLERS
VIEWS & VIEW CONTROLLERS

Basic Elemente (Views, Data, Logic)
VIEWS & VIEW CONTROLLERS

Basic Elemente (Views, Data, Logic)

Starting point (muss subklass werden)
VIEWS & VIEW CONTROLLERS

Basic Elemente (Views, Data, Logic)

Starting point (muss subklass werden)

Ist (kann) durch ein NIB representiert werden
VIEWS & VIEW CONTROLLERS

Basic Elemente (Views, Data, Logic)

Starting point (muss subklass werden)

Ist (kann) durch ein NIB representiert werden
VIEWS & VIEW CONTROLLERS

Basic Elemente (Views, Data, Logic)

Starting point (muss subklass werden)

Ist (kann) durch ein NIB representiert werden


- initWithNibName:bundle:
VIEWS & VIEW CONTROLLERS

Basic Elemente (Views, Data, Logic)

Starting point (muss subklass werden)

Ist (kann) durch ein NIB representiert werden


- initWithNibName:bundle:

- (void)viewDidLoad
VIEWS & VIEW CONTROLLERS

Basic Elemente (Views, Data, Logic)

Starting point (muss subklass werden)

Ist (kann) durch ein NIB representiert werden


- initWithNibName:bundle:

- (void)viewDidLoad

- (void)viewWillAppear:(BOOL)animated
ZWEI WICHTIGE ELEMENTE
ZWEI WICHTIGE ELEMENTE
ZWEI WICHTIGE ELEMENTE




Navigation Controller
ZWEI WICHTIGE ELEMENTE



                      r
                  lle
                 o
              ntr
             Co
        iew
        tV
    oo
   /R
    p
 To




Navigation Controller
ZWEI WICHTIGE ELEMENTE



                      r
                  lle
                 o
              ntr
             Co
        iew
        tV
    oo
   /R
    p
 To




Navigation Controller
ZWEI WICHTIGE ELEMENTE



                      r
                  lle
                 o
              ntr
             Co
        iew
        tV
    oo
   /R
    p
 To




Navigation Controller
ZWEI WICHTIGE ELEMENTE



                                   r
                               lle
                             o
                          ntr
- (id)initWithRootViewController:(UIViewController *)rootViewController;
                      Co


- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;
                  iew




- (UIViewController *)popViewControllerAnimated:(BOOL)animated;
               tV
           oo
         /R
        p
     To




  Navigation Controller
ZWEI WICHTIGE ELEMENTE



                      r
                  lle
                 o
              ntr
             Co
        iew
        tV
    oo
   /R
    p
 To




Navigation Controller
ZWEI WICHTIGE ELEMENTE



                      r
                  lle
                 o
              ntr
             Co
        iew
        tV
    oo
   /R




                           DEMO 8!
    p
 To




                          PUSH & POP
Navigation Controller
ZWEI WICHTIGE ELEMENTE



                      r
                  lle
                 o
              ntr
             Co
        iew
        tV
    oo
   /R
    p
 To




Navigation Controller
ZWEI WICHTIGE ELEMENTE



                      r
                  lle
                 o
              ntr
             Co
        iew
        tV
    oo
   /R
    p
 To




Navigation Controller
ZWEI WICHTIGE ELEMENTE



                      r
                  lle
                 o
              ntr
             Co
        iew
        tV
    oo
   /R
    p
 To




Navigation Controller
ZWEI WICHTIGE ELEMENTE



                      r
                  lle
                 o
              ntr
             Co
        iew
        tV
    oo
   /R
    p
 To




Navigation Controller     Tab Bar Controller
ZWEI WICHTIGE ELEMENTE



                      r
                  lle
                 o
              ntr
             Co
        iew
        tV
    oo
   /R
    p
 To




Navigation Controller     Tab Bar Controller
BEIDE GLEICHZEITIG?
BEIDE GLEICHZEITIG?


  TabBarController
       NavigationController

       NavigationController

         ViewController
TABLE VIEWS
Table View Anatomy
                TABLE VIEWS
                   Plain Style

Table Header
                                    Section Header


                                    Table Cell
                                    Section Footer


     Section


Table Footer
Table View Anatomy
                   Grouped Style

Table Header
                                    Section Header


                                    Table Cell
                                    Section Footer



     Section



Table Footer
WIE BEKOMME ICH MEINE
     DATEN DRIN?
WIE BEKOMME ICH MEINE
      DATEN DRIN?


- (NSInteger)tableView:(UITableView *)tableView
WIE BEKOMME ICH MEINE
        DATEN DRIN?


  - (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section;
WIE BEKOMME ICH MEINE
        DATEN DRIN?


  - (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section;
WIE BEKOMME ICH MEINE
        DATEN DRIN?


  - (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section;
WIE BEKOMME ICH MEINE
         DATEN DRIN?


   - (NSInteger)tableView:(UITableView *)tableView
 numberOfRowsInSection:(NSInteger)section;


- (UITableViewCell *)tableView:(UITableView *)tableView
WIE BEKOMME ICH MEINE
         DATEN DRIN?


   - (NSInteger)tableView:(UITableView *)tableView
 numberOfRowsInSection:(NSInteger)section;


- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath;
ONE MORE THING
ONE MORE THING

In diesem Vortrag wird über zwei Themen gesprochen: Die
Erfahrung als quot;Switcherquot; von .NET zu Cocoa/Obj. C und eine
kleine Einführung (mit Demo) in die iPhone Entwicklung.
ONE MORE THING

In diesem Vortrag wird über zwei Themen gesprochen: Die
Erfahrung als quot;Switcherquot; von .NET zu Cocoa/Obj. C und eine
kleine Einführung (mit Demo) in die iPhone Entwicklung.

Was kann man alles mit Dingen wie Core Animation, Core
Location, und anderen Dingen machen.
ONE MORE THING

In diesem Vortrag wird über zwei Themen gesprochen: Die
Erfahrung als quot;Switcherquot; von .NET zu Cocoa/Obj. C und eine
kleine Einführung (mit Demo) in die iPhone Entwicklung.

Was kann man alles mit Dingen wie Core Animation, Core
Location, und anderen Dingen machen.

CORE LOCATION??? ;)
DANKE!

FRAGEN?

Mais conteúdo relacionado

Semelhante a Einfürung iPhone Entwicklung

ICS UserGroup - 2015 - Eclipse and Notes - Love/Hate Relationships
ICS UserGroup - 2015 - Eclipse and Notes - Love/Hate RelationshipsICS UserGroup - 2015 - Eclipse and Notes - Love/Hate Relationships
ICS UserGroup - 2015 - Eclipse and Notes - Love/Hate Relationships
Christoph Adler
 
Die 7 1/2 Todsünden des Barrierefreien Webs
Die 7 1/2 Todsünden des Barrierefreien WebsDie 7 1/2 Todsünden des Barrierefreien Webs
Die 7 1/2 Todsünden des Barrierefreien Webs
Eric Eggert
 

Semelhante a Einfürung iPhone Entwicklung (20)

Development in der Cloud-Ära
Development in der Cloud-ÄraDevelopment in der Cloud-Ära
Development in der Cloud-Ära
 
Development in der Cloud-Ära
Development in der Cloud-ÄraDevelopment in der Cloud-Ära
Development in der Cloud-Ära
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino Developers
 
Mono
MonoMono
Mono
 
German: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptGerman: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit Javascript
 
Top 10 Internet Trends 2005
Top 10 Internet Trends 2005Top 10 Internet Trends 2005
Top 10 Internet Trends 2005
 
Azure Notebooks
Azure NotebooksAzure Notebooks
Azure Notebooks
 
Präsentation Screencasts 2.11.11
Präsentation Screencasts 2.11.11Präsentation Screencasts 2.11.11
Präsentation Screencasts 2.11.11
 
Flutter 101 - eine kleine Einführung - Flutter Rhein-Main Meetup
Flutter 101 - eine kleine Einführung - Flutter Rhein-Main MeetupFlutter 101 - eine kleine Einführung - Flutter Rhein-Main Meetup
Flutter 101 - eine kleine Einführung - Flutter Rhein-Main Meetup
 
Einstieg in Xamarin und Xamarin.Forms, DDC 2018
Einstieg in Xamarin und Xamarin.Forms, DDC 2018Einstieg in Xamarin und Xamarin.Forms, DDC 2018
Einstieg in Xamarin und Xamarin.Forms, DDC 2018
 
ICS UserGroup - 2015 - Eclipse and Notes - Love/Hate Relationships
ICS UserGroup - 2015 - Eclipse and Notes - Love/Hate RelationshipsICS UserGroup - 2015 - Eclipse and Notes - Love/Hate Relationships
ICS UserGroup - 2015 - Eclipse and Notes - Love/Hate Relationships
 
Kundenbindung ohne SPAM
Kundenbindung ohne SPAMKundenbindung ohne SPAM
Kundenbindung ohne SPAM
 
Augmented Reality Workshop
Augmented Reality WorkshopAugmented Reality Workshop
Augmented Reality Workshop
 
NetBeans für PHP-Entwickler
NetBeans für PHP-EntwicklerNetBeans für PHP-Entwickler
NetBeans für PHP-Entwickler
 
Kennen sie schon - Important tools for C# developers
Kennen sie schon - Important tools for C# developersKennen sie schon - Important tools for C# developers
Kennen sie schon - Important tools for C# developers
 
IBM Lotus Notes - From PLATO to the Leading Groupware Platform
IBM Lotus Notes - From PLATO to the Leading Groupware PlatformIBM Lotus Notes - From PLATO to the Leading Groupware Platform
IBM Lotus Notes - From PLATO to the Leading Groupware Platform
 
Docker for Python Development
Docker for Python DevelopmentDocker for Python Development
Docker for Python Development
 
Die 7 1/2 Todsünden des Barrierefreien Webs
Die 7 1/2 Todsünden des Barrierefreien WebsDie 7 1/2 Todsünden des Barrierefreien Webs
Die 7 1/2 Todsünden des Barrierefreien Webs
 
LogFile Auswertung (log analysis)
LogFile Auswertung (log analysis)LogFile Auswertung (log analysis)
LogFile Auswertung (log analysis)
 
iPhone-Games aufs Netbook portieren
iPhone-Games aufs Netbook portiereniPhone-Games aufs Netbook portieren
iPhone-Games aufs Netbook portieren
 

Einfürung iPhone Entwicklung

  • 1. EINFÜHRUNG IN DIE Entwicklung http://pomcast.biz [iPhone developers]
  • 2. WER IST DIESER STUFF MC? flickr.com/fasttorwa
  • 3. WER IST DIESER STUFF MC? flickr.com/fasttorwa
  • 4. WER IST DIESER STUFF MC? Mai 2005: Pomcast.fr flickr.com/fasttorwa
  • 5. WER IST DIESER STUFF MC? Mai 2005: Pomcast.fr Podcast #1 über Apple auf Französisch flickr.com/fasttorwa
  • 6. WER IST DIESER STUFF MC? Mai 2005: Pomcast.fr Podcast #1 über Apple auf Französisch Später: Deutsch, Englisch, Spanisch flickr.com/fasttorwa
  • 7. WER IST DIESER STUFF MC? Mai 2005: Pomcast.fr Podcast #1 über Apple auf Französisch Später: Deutsch, Englisch, Spanisch Video Interviews flickr.com/fasttorwa
  • 8. WER IST DIESER STUFF MC? Mai 2005: Pomcast.fr Podcast #1 über Apple auf Französisch Später: Deutsch, Englisch, Spanisch Video Interviews flickr.com/fasttorwa
  • 9. WER IST DIESER STUFF MC? Mai 2005: Pomcast.fr Podcast #1 über Apple auf Französisch Später: Deutsch, Englisch, Spanisch Video Interviews StuFF mc? flickr.com/fasttorwa
  • 11. WER IST DIESER MANUEL CARRA flickr.com/fasttorwa
  • 12. WER IST DIESER MANUEL CARRA Spanier in Belgien geboren... flickr.com/fasttorwa
  • 13. WER IST DIESER MANUEL CARRA Spanier in Belgien geboren... Wohnaft in Deutschland seit 2003 flickr.com/fasttorwa
  • 14. WER IST DIESER MANUEL CARRA Spanier in Belgien geboren... Wohnaft in Deutschland seit 2003 Deutsche “Frau” + 2x2sprachige Töchter flickr.com/fasttorwa
  • 15. WER IST DIESER MANUEL CARRA Spanier in Belgien geboren... Wohnaft in Deutschland seit 2003 Deutsche “Frau” + 2x2sprachige Töchter Beruflich Informatiker seit 1997 als... flickr.com/fasttorwa
  • 16. WER IST DIESER MANUEL CARRA Spanier in Belgien geboren... Wohnaft in Deutschland seit 2003 Deutsche “Frau” + 2x2sprachige Töchter Beruflich Informatiker seit 1997 als... Microsoft Entwickler... flickr.com/fasttorwa
  • 18. STUFF MC: “JETZT MIT COCOA® POWERS INSIDE” Source: moillusions.com
  • 19. STUFF MC: “JETZT MIT COCOA® POWERS INSIDE” Source: moillusions.com
  • 20. STUFF MC: “JETZT MIT COCOA® POWERS INSIDE” Source: moillusions.com
  • 21. STUFF MC: “JETZT MIT COCOA® POWERS INSIDE” Seit Sommer ’08 iPhone Entwickler Source: moillusions.com
  • 22. STUFF MC: “JETZT MIT COCOA® POWERS INSIDE” Seit Sommer ’08 iPhone Entwickler Familie zu füttern :) Source: moillusions.com
  • 23. STUFF MC: “JETZT MIT COCOA® POWERS INSIDE” Seit Sommer ’08 iPhone Entwickler Familie zu füttern :) Manchmal ist Cocoa wie Windows... Source: moillusions.com
  • 24. STUFF MC: “JETZT MIT COCOA® POWERS INSIDE” Seit Sommer ’08 iPhone Entwickler Familie zu füttern :) Manchmal ist Cocoa wie Windows... Learning Curve ist nicht soooo einfach... Source: moillusions.com
  • 25.
  • 26. Wie viele hier haben... • Grundkenntnisse in O.O. Programmierung? • schon mit .Net / Java entwickelt? • schon für Mac / iPhone entwickelt?
  • 28. FRÜHER MIT .NET/C# Der Compiler war mein Schutz-Engel
  • 29. FRÜHER MIT .NET/C# Der Compiler war mein Schutz-Engel Kompiliert == Funktioniert...
  • 30. FRÜHER MIT .NET/C# Der Compiler war mein Schutz-Engel Kompiliert == Funktioniert... Speicherverwaltung? Wie meinst du das?
  • 31. FRÜHER MIT .NET/C# Der Compiler war mein Schutz-Engel Kompiliert == Funktioniert... Speicherverwaltung? Wie meinst du das? Visual Studio.NET!!!
  • 36. COCOA / OBJ. C “Ich mag dich trotzdem”
  • 38. FRAMEWORK: COCOA Mac OS X Cocoa Media Core Services Core OS
  • 39. FRAMEWORK: COCOA Mac OS X Cocoa iPhone OS Media Cocoa Touch Core Services Media Core OS Core Services Core OS Thursday, April 2, 2009
  • 40. Core OS iPhone OS OS X Kernel Power Mgmt Cocoa Touch Mach 3.0 Keychain Media BSD Certificates Core Services Sockets File System Security Bonjour Core OS
  • 41. Core Services iPhone OS Collections Core Location Cocoa Touch Address Book Net Services Media Networking Threading Core Services File Access Preferences SQLite URL utilities Core OS
  • 42. Media iPhone OS Core Audio JPG, PNG, TIFF Cocoa Touch OpenAL PDF Media Audio Mixing Quartz (2D) Core Services Audio Recording Core Animation Video Playback OpenGL ES Core OS
  • 43. Cocoa Touch iPhone OS Multi-Touch Events Alerts Cocoa Touch Multi-Touch Controls Web Views Media Accelerometer People Picker Core Services View Hierarchy Image Picker Localization Controllers Core OS
  • 50. COCOA TOUCH = NSString NSArray NSUserDefault ______ NSXML TouchXML (Google ist dein Freund...)
  • 51. COCOA TOUCH = NSString NSArray NSUserDefault ______ NSXML TouchXML (Google ist dein Freund...) ... (und ...++?: Google ist dein Freund)
  • 52. COCOA TOUCH = FO NSString U NSArray N DA NSUserDefault TI ______ NSXML ON TouchXML (Google ist dein Freund...) ... (und ...++?: Google ist dein Freund)
  • 61. FOUNDATION + ...? UIPickerView UISearchBar
  • 62. FOUNDATION + ...? UIPickerView UISearchBar
  • 63. FOUNDATION + ...? UIPickerView UISearchBar
  • 64. FOUNDATION + ...? UIKit UIPickerView (Viel coolerer Name - und Prefix - als AppKit) UISearchBar
  • 71. TOOLS: XCODE & IB Jean-Marie Hullot
  • 72. TOOLS: XCODE & IB Interface Builder ist zum 1. Mal 1988 als Teil von NeXTSTEP 0.8 in Erscheinung getreten. Es wurde von Jean-Marie Hullot erfunden und entwickelt.
  • 73. TOOLS: XCODE & IB Interface Builder ist zum 1. Mal 1988 als Teil von NeXTSTEP 0.8 in Erscheinung getreten. Es wurde von Jean-Marie Hullot erfunden und entwickelt.
  • 74. TOOLS: XCODE & IB Interface Builder ist zum 1. Mal 1988 als Teil von NeXTSTEP 0.8 in Erscheinung getreten. Es wurde von Jean-Marie Hullot erfunden und entwickelt.
  • 78. INTERFACE BUILDER 3.1 Library & Inspektor Dokument Window
  • 79. INTERFACE BUILDER 3.1 Library & Inspektor Dokument Window Window, views, ...
  • 81. SPRACHE: OBJECTIVE C Superset von C... mit Objects
  • 82. SPRACHE: OBJECTIVE C Superset von C... mit Objects @interface, @implementation
  • 83. SPRACHE: OBJECTIVE C Superset von C... mit Objects @interface, @implementation Die “Square bracket gang”!
  • 84. SPRACHE: OBJECTIVE C Superset von C... mit Objects @interface, @implementation Die “Square bracket gang”!
  • 85. SPRACHE: OBJECTIVE C Superset von C... mit Objects @interface, @implementation Die “Square bracket gang”! “Loosely Typed”, d.h. “Welche Compiler?” :)
  • 86. +-[]:
  • 87. +-[]: - (int)count; // instance Method
  • 88. +-[]: - (int)count; // instance Method + (NSString *)stringWithFormat:...; // class Method
  • 89. +-[]: - (int)count; // instance Method + (NSString *)stringWithFormat:...; // class Method Methodenaufruf: • [receiver tuDas]
  • 90. +-[]: - (int)count; // instance Method + (NSString *)stringWithFormat:...; // class Method Methodenaufruf: • [receiver tuDas]
  • 91. +-[]: - (int)count; // instance Method + (NSString *)stringWithFormat:...; // class Method Methodenaufruf: • [receiver tuDas] • [receiver tuDas:aberSo]
  • 92. +-[]: - (int)count; // instance Method + (NSString *)stringWithFormat:...; // class Method Methodenaufruf: • [receiver tuDas] • [receiver tuDas:aberSo]
  • 93. +-[]: - (int)count; // instance Method + (NSString *)stringWithFormat:...; // class Method Methodenaufruf: • [receiver tuDas] • [receiver tuDas:aberSo] • [receiver tuDas:aberSo undMit:jemand]
  • 94. +-[]: - (int)count; // instance Method + (NSString *)stringWithFormat:...; // class Method Methodenaufruf: • [receiver tuDas] • [receiver tuDas:aberSo] • [receiver tuDas:aberSo undMit:jemand]
  • 97. HEADER DATEI @interface Person : NSObject { // instance variables NSString *name; int age; } // method declarations - (NSString *)name; - (void)setName:(NSString *)value; - (int)age; - (void)setAge:(int)age; - (BOOL)canLegallyVote; - (void)castBallot; @end
  • 98. HEADER DATEI @interface Person : NSObject { // instance variables NSString *name; int age; } // method declarations - (NSString *)name; - (void)setName:(NSString *)value; - (int)age; - (void)setAge:(int)age; - (BOOL)canLegallyVote; - (void)castBallot; @end
  • 99. HEADER DATEI @interface Person : NSObject { // instance variables NSString *name; int age; } // method declarations - (NSString *)name; - (void)setName:(NSString *)value; - (int)age; - (void)setAge:(int)age; - (BOOL)canLegallyVote; Person *myPerson = [Person new]; - (void)castBallot; NSString *name = [myPerson name]; @end [myPerson setName:@“New Name”];
  • 100. HEADER DATEI @interface Person : NSObject { // instance variables NSString *name; int age; } // method declarations - (NSString *)name; - (void)setName:(NSString *)value; - (int)age; - (void)setAge:(int)age; - (BOOL)canLegallyVote; Person *myPerson = [Person new]; - (void)castBallot; NSString *name = [myPerson name]; @end [myPerson setName:@“New Name”];
  • 101. HEADER DATEI @interface Person : NSObject { // instance variables NSString *name; int age; } // method declarations - (NSString *)name; - (void)setName:(NSString *)value; - (int)age; - (void)setAge:(int)age; - (BOOL)canLegallyVote; Person *myPerson = [Person new]; - (void)castBallot; NSString *name = [myPerson name]; @end [myPerson setName:@“New Name”];
  • 102. HEADER DATEI @interface Person : NSObject { // instance variables NSString *name; int age; } // method declarations - (NSString *)name; - (void)setName:(NSString *)value; - (int)age; - (void)setAge:(int)age; - (BOOL)canLegallyVote; Person *myPerson = [Person new]; - (void)castBallot; NSString *name = [myPerson name]; @end [myPerson setName:@“New Name”];
  • 103. HEADER DATEI @interface Person : NSObject { // instance variables NSString *name; int age; } // method declarations - (NSString *)name; - (void)setName:(NSString *)value; - (int)age; - (void)setAge:(int)age; - (BOOL)canLegallyVote; Person *myPerson = [Person new]; - (void)castBallot; NSString *name = [myPerson name]; @end [myPerson setName:@“New Name”];
  • 104. HEADER DATEI @interface Person : NSObject { // instance variables NSString *name; int age; } // method declarations - (NSString *)name; - (void)setName:(NSString *)value; - (int)age; - (void)setAge:(int)age; - (BOOL)canLegallyVote; Person *myPerson = [Person new]; - (void)castBallot; NSString *name = [myPerson name]; @end [myPerson setName:@“New Name”];
  • 105. HEADER DATEI @interface Person : NSObject { // instance variables NSString *name; int age; } // method declarations - (NSString *)name; - (void)setName:(NSString *)value; - (int)age; - (void)setAge:(int)age; - (BOOL)canLegallyVote; - (void)castBallot; @end
  • 106. HEADER DATEI @interface Person : NSObject { // instance variables NSString *name; int age; } // method declarations name - (NSString *)name; - (void)setName:(NSString *)value; age - (int)age; - (void)setAge:(int)age; canLegallyVote - (BOOL)canLegallyVote; - (void)castBallot; @end
  • 107. HEADER DATEI @interface Person : NSObject { // instance variables NSString *name; int age; } // method declarations (ObjC 2.0) //property declarations name - (NSString *)name; - (void)setName:(NSString *)value; @property int age; age - (int)age; @property NSString *name - (void)setAge:(int)age; @property (readonly) canLegallyVote; canLegallyVote - (BOOL)canLegallyVote; - (void)castBallot; @end
  • 110. IMMMPLEMATION #import quot;Person.hquot; @implementation Person - (int)age { return age; } - (void)setAge:(int)value { age = value; } - (BOOL)canLegallyVote { return ([self age] >= 18); } @end
  • 111. IMMMPLEMATION #import quot;Person.hquot; @implementation Person age - (int)age { return age; } - (void)setAge:(int)value { age = value; } canLegallyVote - (BOOL)canLegallyVote { return ([self age] >= 18); } @end
  • 112. IMMMPLEMATION #import quot;Person.hquot; @implementation Person age - (int)age { @synthetise name; return age; } - (void)setAge:(int)value { age = value; } canLegallyVote - (BOOL)canLegallyVote { return ([self age] >= 18); } @end
  • 116. APP DELEGATE UIApplicationDelegate Delegate? “Lass mich wissen, wenn...” - (void)applicationDidFinishLaunching:(UIApplication *)application;
  • 117. APP DELEGATE UIApplicationDelegate Delegate? “Lass mich wissen, wenn...” - (void)applicationDidFinishLaunching:(UIApplication *)application; - (void)applicationWillTerminate:(UIApplication *)application;
  • 118. APP DELEGATE UIApplicationDelegate Delegate? “Lass mich wissen, wenn...” - (void)applicationDidFinishLaunching:(UIApplication *)application; - (void)applicationWillTerminate:(UIApplication *)application; - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application;
  • 123. TARGET-ACTION UIControlEventValueChanged Controller (myObject) - (void)updateNumber
  • 124. TARGET-ACTION UIControlEventValueChanged Controller (myObject) - (void)updateNumber target: myObject action: @selector(updateNumber) event: UIControlEventValueChanged
  • 125. TARGET-ACTION UIControlEventValueChanged Controller (myObject) - (void)updateNumber - (IBAction)updateNumber; target: myObject - (IBAction)updateNumber:(id)sender; action: @selector(updateNumber) - (IBAction)updateNumber:(id)sender withEvent:(UIEvent *)event; event: UIControlEventValueChanged
  • 126. TARGET-ACTION DEMO! UIControlEventValueChanged “SLIDE ME BABY” Controller (myObject) - (void)updateNumber - (IBAction)updateNumber; target: myObject - (IBAction)updateNumber:(id)sender; action: @selector(updateNumber) - (IBAction)updateNumber:(id)sender withEvent:(UIEvent *)event; event: UIControlEventValueChanged
  • 127. TARGET-ACTION UIControlEventValueChanged Controller (myObject) - (void)updateNumber - (IBAction)updateNumber; target: myObject - (IBAction)updateNumber:(id)sender; action: @selector(updateNumber) - (IBAction)updateNumber:(id)sender withEvent:(UIEvent *)event; event: UIControlEventValueChanged
  • 128. MEMORY MANAGEMENT (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...)
  • 129. MEMORY MANAGEMENT (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...) Person *person = [[Person alloc] init];
  • 130. MEMORY MANAGEMENT (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...) Person *person = [[Person alloc] init]; ...
  • 131. MEMORY MANAGEMENT (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...) Person *person = [[Person alloc] init]; ... Allocation Destruction C malloc free ObjC alloc dealloc (release)
  • 132. MEMORY MANAGEMENT (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...) Person *person = [[Person alloc] init]; ... Allocation Destruction [person release]; C malloc free ObjC alloc dealloc (release)
  • 133. MEMORY MANAGEMENT (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...) Person *person = [[Person alloc] init]; ... Allocation Destruction [person release]; C malloc free ObjC alloc dealloc (release)
  • 134. MEMORY MANAGEMENT (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...) Person *person = [[Person alloc] init]; ... Allocation Destruction [person release]; C malloc free ObjC alloc dealloc (release) Retain Count:
  • 135. MEMORY MANAGEMENT (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...) Person *person = [[Person alloc] init]; ... Allocation Destruction [person release]; C malloc free ObjC alloc dealloc (release) Retain Count:
  • 136. MEMORY MANAGEMENT (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...) Person *person = [[Person alloc] init]; ... Allocation Destruction [person release]; C malloc free ObjC alloc dealloc (release) [person tuWas]; Retain Count:
  • 137. MEMORY MANAGEMENT (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...) Person *person = [[Person alloc] init]; ... Allocation Destruction [person release]; C malloc free ObjC alloc dealloc (release) // CRASH! [person tuWas]; Retain Count:
  • 138. MEMORY MANAGEMENT (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...) Person *person = [[Person alloc] init]; ... Allocation Destruction [person release]; C malloc free ObjC alloc dealloc person = nil; (release) // CRASH! [person tuWas]; Retain Count:
  • 139. MEMORY MANAGEMENT (NICHTS MIT GARBAGE COLLECTION AUF DER IPHONE...) Person *person = [[Person alloc] init]; ... Allocation Destruction [person release]; C malloc free ObjC alloc dealloc person = nil; (release) // // CRASH! Keine Effekt! [person tuWas]; Retain Count:
  • 140. AUTO-RELEASE (IMMER NOCH KEIN GARBAGE COLLECTION ABER FAST...)
  • 141. AUTO-RELEASE (IMMER NOCH KEIN GARBAGE COLLECTION ABER FAST...) Beispiel mit Strings string = [[NSString alloc] initWithFormat:@”Hi %@”, person] [label setText:string];
  • 142. AUTO-RELEASE (IMMER NOCH KEIN GARBAGE COLLECTION ABER FAST...) Beispiel mit Strings string = [[NSString alloc] initWithFormat:@”Hi %@”, person] [label setText:string]; [string release];
  • 143. AUTO-RELEASE (IMMER NOCH KEIN GARBAGE COLLECTION ABER FAST...) Beispiel mit Strings string = [[NSString alloc] initWithFormat:@”Hi %@”, person] [label setText:string]; [string release]; geht auch so string = [NSString stringWithFormat:@”Hi %@”, person]; [label setText:string];
  • 144. AUTO-RELEASE (IMMER NOCH KEIN GARBAGE COLLECTION ABER FAST...) Beispiel mit Strings string = [[NSString alloc] initWithFormat:@”Hi %@”, person] [label setText:string]; [string release]; geht auch so string = [NSString stringWithFormat:@”Hi %@”, person]; [label setText:string]; // brauche ich nicht...
  • 145. WAS IST EIN VIEW?
  • 146. WAS IST EIN VIEW? Rechteckige Zone auf dem Bildschirm
  • 147. WAS IST EIN VIEW? Rechteckige Zone auf dem Bildschirm Subklasse von UIResponder (Event handling class)
  • 148. WAS IST EIN VIEW? Rechteckige Zone auf dem Bildschirm Subklasse von UIResponder (Event handling class) Views hierarchisch arrangiert.
  • 149. WAS IST EIN VIEW? Rechteckige Zone auf dem Bildschirm Subklasse von UIResponder (Event handling class) Views hierarchisch arrangiert. Jede HAT eine Superview und KANN Subviews haben.
  • 150. WAS IST EIN VIEW? Rechteckige Zone auf dem Bildschirm Subklasse von UIResponder (Event handling class) Views hierarchisch arrangiert. Jede HAT eine Superview und KANN Subviews haben. - (void)addSubview:(UIView *)view;
  • 151. WAS IST EIN VIEW? Rechteckige Zone auf dem Bildschirm Subklasse von UIResponder (Event handling class) Views hierarchisch arrangiert. Jede HAT eine Superview und KANN Subviews haben. - (void)addSubview:(UIView *)view; - (void)removeFromSuperview;
  • 156. GEOMETRY CGRectMake (x, y, width, height) CGRect rect = CGRectMake (80.0, 54.0, 144.0, 72.0);
  • 157. GEOMETRY DEMO! “CLICK ME BABY” CGRectMake (x, y, width, height) CGRect rect = CGRectMake (80.0, 54.0, 144.0, 72.0);
  • 159. CUSTOM VIEWS Override - (void)drawRect:(CGRect)rect;
  • 160. CUSTOM VIEWS Override - (void)drawRect:(CGRect)rect; CGContextMoveToPoint
  • 161. CUSTOM VIEWS Override - (void)drawRect:(CGRect)rect; CGContextMoveToPoint CGContextAddLineToPoint
  • 162. CUSTOM VIEWS Override - (void)drawRect:(CGRect)rect; CGContextMoveToPoint CGContextAddLineToPoint CGContextClosePath
  • 163. CUSTOM VIEWS Override - (void)drawRect:(CGRect)rect; CGContextMoveToPoint CGContextAddLineToPoint CGContextClosePath
  • 164. CUSTOM VIEWS Override - (void)drawRect:(CGRect)rect; CGContextMoveToPoint CGContextAddLineToPoint CGContextClosePath Override touchesBegan...
  • 165. CUSTOM VIEWS Override - (void)drawRect:(CGRect)rect; CGContextMoveToPoint CGContextAddLineToPoint CGContextClosePath Override touchesBegan...
  • 166. BESSER ALS CORE ANIMATION
  • 167. BESSER ALS CORE ANIMATION UIViewAnimation
  • 168. BESSER ALS CORE ANIMATION UIViewAnimation [UIView beginAnimations:nil context:nil];
  • 169. BESSER ALS CORE ANIMATION UIViewAnimation [UIView beginAnimations:nil context:nil]; CGRect polygonFrame = polygonView.frame;
  • 170. BESSER ALS CORE ANIMATION UIViewAnimation [UIView beginAnimations:nil context:nil]; CGRect polygonFrame = polygonView.frame; polygonFrame.origin.y += 200;
  • 171. BESSER ALS CORE ANIMATION UIViewAnimation [UIView beginAnimations:nil context:nil]; CGRect polygonFrame = polygonView.frame; polygonFrame.origin.y += 200; polygonView.frame = polygonFrame;
  • 172. BESSER ALS CORE ANIMATION UIViewAnimation [UIView beginAnimations:nil context:nil]; CGRect polygonFrame = polygonView.frame; polygonFrame.origin.y += 200; polygonView.frame = polygonFrame; [UIView commitAnimations];
  • 173. BESSER ALS CORE ANIMATION UIViewAnimation [UIView beginAnimations:nil context:nil]; CGRect polygonFrame = polygonView.frame; polygonFrame.origin.y += 200; polygonView.frame = polygonFrame; [UIView commitAnimations];
  • 174. BESSER ALS CORE ANIMATION UIViewAnimation [UIView beginAnimations:nil context:nil]; CGRect polygonFrame = polygonView.frame; polygonFrame.origin.y += 200; polygonView.frame = polygonFrame; [UIView commitAnimations]; Demo 6
  • 175. SAVING STATE Demo 7
  • 177. SAVING STATE NSUserDefaults XML WebServices (Rest, Json, ...) Demo 7
  • 178. SAVING STATE NSUserDefaults XML WebServices (Rest, Json, ...) SQLite DB (oder z.B. BaseTen) Demo 7
  • 179. SAVING STATE NSUserDefaults XML WebServices (Rest, Json, ...) SQLite DB (oder z.B. BaseTen) Demo 7
  • 180. SAVING STATE NSUserDefaults XML WebServices (Rest, Json, ...) SQLite DB (oder z.B. BaseTen) Wäre nett, wenn das Programm sich errinnert, ... Demo 7
  • 181. EIN IPHONE IST KEIN MAC 3.5” != 30” ( 320x480 != 2560x1600 )
  • 183. VIEWS & VIEW CONTROLLERS
  • 184. VIEWS & VIEW CONTROLLERS Basic Elemente (Views, Data, Logic)
  • 185. VIEWS & VIEW CONTROLLERS Basic Elemente (Views, Data, Logic) Starting point (muss subklass werden)
  • 186. VIEWS & VIEW CONTROLLERS Basic Elemente (Views, Data, Logic) Starting point (muss subklass werden) Ist (kann) durch ein NIB representiert werden
  • 187. VIEWS & VIEW CONTROLLERS Basic Elemente (Views, Data, Logic) Starting point (muss subklass werden) Ist (kann) durch ein NIB representiert werden
  • 188. VIEWS & VIEW CONTROLLERS Basic Elemente (Views, Data, Logic) Starting point (muss subklass werden) Ist (kann) durch ein NIB representiert werden - initWithNibName:bundle:
  • 189. VIEWS & VIEW CONTROLLERS Basic Elemente (Views, Data, Logic) Starting point (muss subklass werden) Ist (kann) durch ein NIB representiert werden - initWithNibName:bundle: - (void)viewDidLoad
  • 190. VIEWS & VIEW CONTROLLERS Basic Elemente (Views, Data, Logic) Starting point (muss subklass werden) Ist (kann) durch ein NIB representiert werden - initWithNibName:bundle: - (void)viewDidLoad - (void)viewWillAppear:(BOOL)animated
  • 194. ZWEI WICHTIGE ELEMENTE r lle o ntr Co iew tV oo /R p To Navigation Controller
  • 195. ZWEI WICHTIGE ELEMENTE r lle o ntr Co iew tV oo /R p To Navigation Controller
  • 196. ZWEI WICHTIGE ELEMENTE r lle o ntr Co iew tV oo /R p To Navigation Controller
  • 197. ZWEI WICHTIGE ELEMENTE r lle o ntr - (id)initWithRootViewController:(UIViewController *)rootViewController; Co - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated; iew - (UIViewController *)popViewControllerAnimated:(BOOL)animated; tV oo /R p To Navigation Controller
  • 198. ZWEI WICHTIGE ELEMENTE r lle o ntr Co iew tV oo /R p To Navigation Controller
  • 199. ZWEI WICHTIGE ELEMENTE r lle o ntr Co iew tV oo /R DEMO 8! p To PUSH & POP Navigation Controller
  • 200. ZWEI WICHTIGE ELEMENTE r lle o ntr Co iew tV oo /R p To Navigation Controller
  • 201. ZWEI WICHTIGE ELEMENTE r lle o ntr Co iew tV oo /R p To Navigation Controller
  • 202. ZWEI WICHTIGE ELEMENTE r lle o ntr Co iew tV oo /R p To Navigation Controller
  • 203. ZWEI WICHTIGE ELEMENTE r lle o ntr Co iew tV oo /R p To Navigation Controller Tab Bar Controller
  • 204. ZWEI WICHTIGE ELEMENTE r lle o ntr Co iew tV oo /R p To Navigation Controller Tab Bar Controller
  • 206. BEIDE GLEICHZEITIG? TabBarController NavigationController NavigationController ViewController
  • 208. Table View Anatomy TABLE VIEWS Plain Style Table Header Section Header Table Cell Section Footer Section Table Footer
  • 209. Table View Anatomy Grouped Style Table Header Section Header Table Cell Section Footer Section Table Footer
  • 210. WIE BEKOMME ICH MEINE DATEN DRIN?
  • 211. WIE BEKOMME ICH MEINE DATEN DRIN? - (NSInteger)tableView:(UITableView *)tableView
  • 212. WIE BEKOMME ICH MEINE DATEN DRIN? - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
  • 213. WIE BEKOMME ICH MEINE DATEN DRIN? - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
  • 214. WIE BEKOMME ICH MEINE DATEN DRIN? - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
  • 215. WIE BEKOMME ICH MEINE DATEN DRIN? - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; - (UITableViewCell *)tableView:(UITableView *)tableView
  • 216. WIE BEKOMME ICH MEINE DATEN DRIN? - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
  • 218. ONE MORE THING In diesem Vortrag wird über zwei Themen gesprochen: Die Erfahrung als quot;Switcherquot; von .NET zu Cocoa/Obj. C und eine kleine Einführung (mit Demo) in die iPhone Entwicklung.
  • 219. ONE MORE THING In diesem Vortrag wird über zwei Themen gesprochen: Die Erfahrung als quot;Switcherquot; von .NET zu Cocoa/Obj. C und eine kleine Einführung (mit Demo) in die iPhone Entwicklung. Was kann man alles mit Dingen wie Core Animation, Core Location, und anderen Dingen machen.
  • 220. ONE MORE THING In diesem Vortrag wird über zwei Themen gesprochen: Die Erfahrung als quot;Switcherquot; von .NET zu Cocoa/Obj. C und eine kleine Einführung (mit Demo) in die iPhone Entwicklung. Was kann man alles mit Dingen wie Core Animation, Core Location, und anderen Dingen machen. CORE LOCATION??? ;)

Notas do Editor

  1. “StuFF mc” bekannt als PodcasterPomcast.de: Podcast #1 über Apple mit eine lostiger französiche Akzent auf Deutsch
  2. “StuFF mc” bekannt als PodcasterPomcast.de: Podcast #1 über Apple mit eine lostiger französiche Akzent auf Deutsch
  3. “StuFF mc” bekannt als PodcasterPomcast.de: Podcast #1 über Apple mit eine lostiger französiche Akzent auf Deutsch
  4. “StuFF mc” bekannt als PodcasterPomcast.de: Podcast #1 über Apple mit eine lostiger französiche Akzent auf Deutsch
  5. “StuFF mc” bekannt als PodcasterPomcast.de: Podcast #1 über Apple mit eine lostiger französiche Akzent auf Deutsch
  6. “StuFF mc” bekannt als PodcasterPomcast.de: Podcast #1 über Apple mit eine lostiger französiche Akzent auf Deutsch
  7. “StuFF mc” bekannt als PodcasterPomcast.de: Podcast #1 über Apple mit eine lostiger französiche Akzent auf Deutsch
  8. http://www.deviceguru.com/first-12-microsofties-then-and-now/
  9. Weil jeder Microsoft Entwickler irgendwo einen Mac versteckt hat!
  10. Weil jeder Microsoft Entwickler irgendwo einen Mac versteckt hat!
  11. Weil jeder Microsoft Entwickler irgendwo einen Mac versteckt hat!
  12. Weil jeder Microsoft Entwickler irgendwo einen Mac versteckt hat!
  13. Weil jeder Microsoft Entwickler irgendwo einen Mac versteckt hat!
  14. Weil jeder Microsoft Entwickler irgendwo einen Mac versteckt hat!
  15. Maybe a small Object Oriented Note ?
  16. http://en.wikipedia.org/wiki/RAM http://2.bp.blogspot.com/_FwEekRGWPs8/SYbv75XarwI/AAAAAAAAAhc/cXtc38IZzp0/S1600-R/Schutzengel_klein2.png http://www.priceindia.in/computer/wp-content/uploads/2008/10/ddr-ram.png
  17. http://en.wikipedia.org/wiki/RAM http://2.bp.blogspot.com/_FwEekRGWPs8/SYbv75XarwI/AAAAAAAAAhc/cXtc38IZzp0/S1600-R/Schutzengel_klein2.png http://www.priceindia.in/computer/wp-content/uploads/2008/10/ddr-ram.png
  18. http://en.wikipedia.org/wiki/RAM http://2.bp.blogspot.com/_FwEekRGWPs8/SYbv75XarwI/AAAAAAAAAhc/cXtc38IZzp0/S1600-R/Schutzengel_klein2.png http://www.priceindia.in/computer/wp-content/uploads/2008/10/ddr-ram.png
  19. http://en.wikipedia.org/wiki/RAM http://2.bp.blogspot.com/_FwEekRGWPs8/SYbv75XarwI/AAAAAAAAAhc/cXtc38IZzp0/S1600-R/Schutzengel_klein2.png http://www.priceindia.in/computer/wp-content/uploads/2008/10/ddr-ram.png
  20. http://en.wikipedia.org/wiki/RAM http://2.bp.blogspot.com/_FwEekRGWPs8/SYbv75XarwI/AAAAAAAAAhc/cXtc38IZzp0/S1600-R/Schutzengel_klein2.png http://www.priceindia.in/computer/wp-content/uploads/2008/10/ddr-ram.png
  21. http://en.wikipedia.org/wiki/RAM http://2.bp.blogspot.com/_FwEekRGWPs8/SYbv75XarwI/AAAAAAAAAhc/cXtc38IZzp0/S1600-R/Schutzengel_klein2.png http://www.priceindia.in/computer/wp-content/uploads/2008/10/ddr-ram.png
  22. http://en.wikipedia.org/wiki/RAM http://2.bp.blogspot.com/_FwEekRGWPs8/SYbv75XarwI/AAAAAAAAAhc/cXtc38IZzp0/S1600-R/Schutzengel_klein2.png http://www.priceindia.in/computer/wp-content/uploads/2008/10/ddr-ram.png
  23. http://en.wikipedia.org/wiki/RAM http://2.bp.blogspot.com/_FwEekRGWPs8/SYbv75XarwI/AAAAAAAAAhc/cXtc38IZzp0/S1600-R/Schutzengel_klein2.png http://www.priceindia.in/computer/wp-content/uploads/2008/10/ddr-ram.png
  24. http://en.wikipedia.org/wiki/RAM http://2.bp.blogspot.com/_FwEekRGWPs8/SYbv75XarwI/AAAAAAAAAhc/cXtc38IZzp0/S1600-R/Schutzengel_klein2.png http://www.priceindia.in/computer/wp-content/uploads/2008/10/ddr-ram.png
  25. http://en.wikipedia.org/wiki/RAM http://2.bp.blogspot.com/_FwEekRGWPs8/SYbv75XarwI/AAAAAAAAAhc/cXtc38IZzp0/S1600-R/Schutzengel_klein2.png http://www.priceindia.in/computer/wp-content/uploads/2008/10/ddr-ram.png
  26. http://en.wikipedia.org/wiki/RAM http://2.bp.blogspot.com/_FwEekRGWPs8/SYbv75XarwI/AAAAAAAAAhc/cXtc38IZzp0/S1600-R/Schutzengel_klein2.png http://www.priceindia.in/computer/wp-content/uploads/2008/10/ddr-ram.png
  27. Beim aller 1. iPhone Projekt alles mit NSXML im Simulator :) Show some examples of NSString & NSArray methods (see Stanford Lecture 2) Insert some graphics showing that foundation on the iPhone is a SUBSET of foundation on the Mac NSXMLParser!
  28. Beim aller 1. iPhone Projekt alles mit NSXML im Simulator :) Show some examples of NSString & NSArray methods (see Stanford Lecture 2) Insert some graphics showing that foundation on the iPhone is a SUBSET of foundation on the Mac NSXMLParser!
  29. Beim aller 1. iPhone Projekt alles mit NSXML im Simulator :) Show some examples of NSString & NSArray methods (see Stanford Lecture 2) Insert some graphics showing that foundation on the iPhone is a SUBSET of foundation on the Mac NSXMLParser!
  30. Beim aller 1. iPhone Projekt alles mit NSXML im Simulator :) Show some examples of NSString & NSArray methods (see Stanford Lecture 2) Insert some graphics showing that foundation on the iPhone is a SUBSET of foundation on the Mac NSXMLParser!
  31. Beim aller 1. iPhone Projekt alles mit NSXML im Simulator :) Show some examples of NSString & NSArray methods (see Stanford Lecture 2) Insert some graphics showing that foundation on the iPhone is a SUBSET of foundation on the Mac NSXMLParser!
  32. Beim aller 1. iPhone Projekt alles mit NSXML im Simulator :) Show some examples of NSString & NSArray methods (see Stanford Lecture 2) Insert some graphics showing that foundation on the iPhone is a SUBSET of foundation on the Mac NSXMLParser!
  33. Beim aller 1. iPhone Projekt alles mit NSXML im Simulator :) Show some examples of NSString & NSArray methods (see Stanford Lecture 2) Insert some graphics showing that foundation on the iPhone is a SUBSET of foundation on the Mac NSXMLParser!
  34. Beim aller 1. iPhone Projekt alles mit NSXML im Simulator :) Show some examples of NSString & NSArray methods (see Stanford Lecture 2) Insert some graphics showing that foundation on the iPhone is a SUBSET of foundation on the Mac NSXMLParser!
  35. auch: UILabel, UIImageView, UIWebView, ...
  36. auch: UILabel, UIImageView, UIWebView, ...
  37. auch: UILabel, UIImageView, UIWebView, ...
  38. auch: UILabel, UIImageView, UIWebView, ...
  39. auch: UILabel, UIImageView, UIWebView, ...
  40. auch: UILabel, UIImageView, UIWebView, ...
  41. auch: UILabel, UIImageView, UIWebView, ...
  42. auch: UILabel, UIImageView, UIWebView, ...
  43. auch: UILabel, UIImageView, UIWebView, ...
  44. auch: UILabel, UIImageView, UIWebView, ...
  45. auch: UILabel, UIImageView, UIWebView, ...
  46. ==> NACHER: - Xcode starten - Settings zeigen - Neue Projekt Box...
  47. ==> NACHER: - Xcode starten - Settings zeigen - Neue Projekt Box...
  48. ==> NACHER: - Xcode starten - Settings zeigen - Neue Projekt Box...
  49. ==> NACHER: - Xcode starten - Settings zeigen - Neue Projekt Box...
  50. http://docs.sun.com/app/docs/doc/802-2110/6i63kq4sf?a=view
  51. http://docs.sun.com/app/docs/doc/802-2110/6i63kq4sf?a=view
  52. http://docs.sun.com/app/docs/doc/802-2110/6i63kq4sf?a=view
  53. http://docs.sun.com/app/docs/doc/802-2110/6i63kq4sf?a=view
  54. ==> NACHER: - Neue Window based Projekt - “Poly.xcodeproj” - MainWindow.xib anklicken - Library & Inspector zeigen - UILabel & UISlider hinzufugen - In Xcode starten... (Demo1)
  55. ==> NACHER: - Neue Window based Projekt - “Poly.xcodeproj” - MainWindow.xib anklicken - Library & Inspector zeigen - UILabel & UISlider hinzufugen - In Xcode starten... (Demo1)
  56. ==> NACHER: - Neue Window based Projekt - “Poly.xcodeproj” - MainWindow.xib anklicken - Library & Inspector zeigen - UILabel & UISlider hinzufugen - In Xcode starten... (Demo1)
  57. ==> NACHER: - Neue Window based Projekt - “Poly.xcodeproj” - MainWindow.xib anklicken - Library & Inspector zeigen - UILabel & UISlider hinzufugen - In Xcode starten... (Demo1)
  58. ==> NACHER: - Neue Window based Projekt - “Poly.xcodeproj” - MainWindow.xib anklicken - Library & Inspector zeigen - UILabel & UISlider hinzufugen - In Xcode starten... (Demo1)
  59. ==> NACHER: - Neue Window based Projekt - “Poly.xcodeproj” - MainWindow.xib anklicken - Library & Inspector zeigen - UILabel & UISlider hinzufugen - In Xcode starten... (Demo1)
  60. ==> NACHER: - Neue Window based Projekt - “Poly.xcodeproj” - MainWindow.xib anklicken - Library & Inspector zeigen - UILabel & UISlider hinzufugen - In Xcode starten... (Demo1)
  61. ==> NACHER: - Neue Window based Projekt - “Poly.xcodeproj” - MainWindow.xib anklicken - Library & Inspector zeigen - UILabel & UISlider hinzufugen - In Xcode starten... (Demo1)
  62. Error from Debugger: Reply contains invalid hex digit 116 - main.m zeigen (“es ist C”) - Eckige Klammern zeigen - [self notExistingFunction] -> compiler warning aber runtime error...
  63. Error from Debugger: Reply contains invalid hex digit 116 - main.m zeigen (“es ist C”) - Eckige Klammern zeigen - [self notExistingFunction] -> compiler warning aber runtime error...
  64. Error from Debugger: Reply contains invalid hex digit 116 - main.m zeigen (“es ist C”) - Eckige Klammern zeigen - [self notExistingFunction] -> compiler warning aber runtime error...
  65. Error from Debugger: Reply contains invalid hex digit 116 - main.m zeigen (“es ist C”) - Eckige Klammern zeigen - [self notExistingFunction] -> compiler warning aber runtime error...
  66. Error from Debugger: Reply contains invalid hex digit 116 - main.m zeigen (“es ist C”) - Eckige Klammern zeigen - [self notExistingFunction] -> compiler warning aber runtime error...
  67. Maybe not even show properties...
  68. Maybe not even show properties...
  69. Maybe not even show properties...
  70. Maybe not even show properties...
  71. Maybe not even show properties...
  72. Maybe not even show properties...
  73. Maybe not even show properties...
  74. Maybe not even show properties...
  75. Maybe not even show properties...
  76. Maybe not even show properties...
  77. Maybe not even show properties...
  78. Maybe not even show properties...
  79. (Demo2) IBOutlet UISlider *slider; IBOutlet UILabel *label; int sides; - (IBAction)updateNumber; { sides = (int)[slider value]; NSString *string = [NSString stringWithFormat:@\"%d sides\", sides]; label.text = string; } (Demo3) // remove IBOutlet UISlider sides = (int)((UISlider*)sender).value; @interface UIControl - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; - (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; @end
  80. (Demo2) IBOutlet UISlider *slider; IBOutlet UILabel *label; int sides; - (IBAction)updateNumber; { sides = (int)[slider value]; NSString *string = [NSString stringWithFormat:@\"%d sides\", sides]; label.text = string; } (Demo3) // remove IBOutlet UISlider sides = (int)((UISlider*)sender).value; @interface UIControl - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; - (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; @end
  81. (Demo2) IBOutlet UISlider *slider; IBOutlet UILabel *label; int sides; - (IBAction)updateNumber; { sides = (int)[slider value]; NSString *string = [NSString stringWithFormat:@\"%d sides\", sides]; label.text = string; } (Demo3) // remove IBOutlet UISlider sides = (int)((UISlider*)sender).value; @interface UIControl - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; - (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; @end
  82. (Demo2) IBOutlet UISlider *slider; IBOutlet UILabel *label; int sides; - (IBAction)updateNumber; { sides = (int)[slider value]; NSString *string = [NSString stringWithFormat:@\"%d sides\", sides]; label.text = string; } (Demo3) // remove IBOutlet UISlider sides = (int)((UISlider*)sender).value; @interface UIControl - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; - (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; @end
  83. (Demo2) IBOutlet UISlider *slider; IBOutlet UILabel *label; int sides; - (IBAction)updateNumber; { sides = (int)[slider value]; NSString *string = [NSString stringWithFormat:@\"%d sides\", sides]; label.text = string; } (Demo3) // remove IBOutlet UISlider sides = (int)((UISlider*)sender).value; @interface UIControl - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; - (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; @end
  84. (Demo2) IBOutlet UISlider *slider; IBOutlet UILabel *label; int sides; - (IBAction)updateNumber; { sides = (int)[slider value]; NSString *string = [NSString stringWithFormat:@\"%d sides\", sides]; label.text = string; } (Demo3) // remove IBOutlet UISlider sides = (int)((UISlider*)sender).value; @interface UIControl - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; - (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; @end
  85. (Demo2) IBOutlet UISlider *slider; IBOutlet UILabel *label; int sides; - (IBAction)updateNumber; { sides = (int)[slider value]; NSString *string = [NSString stringWithFormat:@\"%d sides\", sides]; label.text = string; } (Demo3) // remove IBOutlet UISlider sides = (int)((UISlider*)sender).value; @interface UIControl - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; - (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; @end
  86. (Demo2) IBOutlet UISlider *slider; IBOutlet UILabel *label; int sides; - (IBAction)updateNumber; { sides = (int)[slider value]; NSString *string = [NSString stringWithFormat:@\"%d sides\", sides]; label.text = string; } (Demo3) // remove IBOutlet UISlider sides = (int)((UISlider*)sender).value; @interface UIControl - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; - (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; @end
  87. (Demo2) IBOutlet UISlider *slider; IBOutlet UILabel *label; int sides; - (IBAction)updateNumber; { sides = (int)[slider value]; NSString *string = [NSString stringWithFormat:@\"%d sides\", sides]; label.text = string; } (Demo3) // remove IBOutlet UISlider sides = (int)((UISlider*)sender).value; @interface UIControl - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; - (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; @end
  88. http://cocoadevcentral.com/d/learn_objectivec/ * NIE dealloc selber aufrufen, außer für [super dealloc]
  89. http://cocoadevcentral.com/d/learn_objectivec/ * NIE dealloc selber aufrufen, außer für [super dealloc]
  90. http://cocoadevcentral.com/d/learn_objectivec/ * NIE dealloc selber aufrufen, außer für [super dealloc]
  91. http://cocoadevcentral.com/d/learn_objectivec/ * NIE dealloc selber aufrufen, außer für [super dealloc]
  92. http://cocoadevcentral.com/d/learn_objectivec/ * NIE dealloc selber aufrufen, außer für [super dealloc]
  93. http://cocoadevcentral.com/d/learn_objectivec/ * NIE dealloc selber aufrufen, außer für [super dealloc]
  94. http://cocoadevcentral.com/d/learn_objectivec/ * NIE dealloc selber aufrufen, außer für [super dealloc]
  95. http://cocoadevcentral.com/d/learn_objectivec/ * NIE dealloc selber aufrufen, außer für [super dealloc]
  96. http://cocoadevcentral.com/d/learn_objectivec/ * NIE dealloc selber aufrufen, außer für [super dealloc]
  97. http://cocoadevcentral.com/d/learn_objectivec/ * NIE dealloc selber aufrufen, außer für [super dealloc]
  98. http://cocoadevcentral.com/d/learn_objectivec/ * NIE dealloc selber aufrufen, außer für [super dealloc]
  99. Model: Weiß nur über Data View: Weiß nichts (fast) über Data Controller: Glue...
  100. HIER SIND WIR MIT STEPHIE...
  101. HIER SIND WIR MIT STEPHIE...
  102. HIER SIND WIR MIT STEPHIE...
  103. HIER SIND WIR MIT STEPHIE...
  104. HIER SIND WIR MIT STEPHIE...
  105. HIER SIND WIR MIT STEPHIE...
  106. !! NIE drawRect aufrufen! DEMO 5
  107. !! NIE drawRect aufrufen! DEMO 5
  108. !! NIE drawRect aufrufen! DEMO 5
  109. !! NIE drawRect aufrufen! DEMO 5
  110. !! NIE drawRect aufrufen! DEMO 5
  111. !! NIE drawRect aufrufen! DEMO 5
  112. !! NIE drawRect aufrufen! DEMO 5
  113. Bitte Soap vergessen :)
  114. Bitte Soap vergessen :)
  115. Bitte Soap vergessen :)
  116. Bitte Soap vergessen :)
  117. Bitte Soap vergessen :)
  118. Nav Bar : Stack Hint: self.navigationItem.backButtonItem Wenn noch zeit: TableViews!
  119. Nav Bar : Stack Hint: self.navigationItem.backButtonItem Wenn noch zeit: TableViews!
  120. Nav Bar : Stack Hint: self.navigationItem.backButtonItem Wenn noch zeit: TableViews!
  121. Nav Bar : Stack Hint: self.navigationItem.backButtonItem Wenn noch zeit: TableViews!
  122. Nav Bar : Stack Hint: self.navigationItem.backButtonItem Wenn noch zeit: TableViews!
  123. Nav Bar : Stack Hint: self.navigationItem.backButtonItem Wenn noch zeit: TableViews!
  124. Nav Bar : Stack Hint: self.navigationItem.backButtonItem Wenn noch zeit: TableViews!
  125. Nav Bar : Stack Hint: self.navigationItem.backButtonItem Wenn noch zeit: TableViews!
  126. Nav Bar : Stack Hint: self.navigationItem.backButtonItem Wenn noch zeit: TableViews!
  127. Nav Bar : Stack Hint: self.navigationItem.backButtonItem Wenn noch zeit: TableViews!
  128. Nav Bar : Stack Hint: self.navigationItem.backButtonItem Wenn noch zeit: TableViews!
  129. Nav Bar : Stack Hint: self.navigationItem.backButtonItem Wenn noch zeit: TableViews!
  130. Nav Bar : Stack Hint: self.navigationItem.backButtonItem Wenn noch zeit: TableViews!