0
CS193P - Lecture 2
           iPhone Application Development

           Objective-C
           Foundation Framework




T...
Announcements




Thursday, January 7, 2010   2
Announcements
        • Enrollment process is almost done




Thursday, January 7, 2010                     2
Announcements
        • Enrollment process is almost done




Thursday, January 7, 2010                     2
Announcements
        • Enrollment process is almost done

        • Shooting for end of day Friday




Thursday, January ...
Announcements
        • Enrollment process is almost done

        • Shooting for end of day Friday

        • Please drop...
Office Hours

        • David Jacobs
             ■   Mondays 4-6pm: Gates 360


        • Paul Salzman
             ■ Som...
iPhone SDK




Thursday, January 7, 2010   4
iPhone SDK




Thursday, January 7, 2010   4
iPhone SDK

        • Enrolled students will be invited to developer program
             ■ Login to Program Portal
      ...
iPhone SDK

        • Enrolled students will be invited to developer program
             ■ Login to Program Portal
      ...
iPhone SDK

        • Enrolled students will be invited to developer program
             ■ Login to Program Portal
      ...
iPhone SDK

        • Enrolled students will be invited to developer program
             ■ Login to Program Portal
      ...
iPhone SDK

        • Enrolled students will be invited to developer program
             ■ Login to Program Portal
      ...
Getting Help
       • The assignment walks you
         through it
       • Key spots to look
            ■ API & Conceptu...
Today’s Topics
        • Questions from Tuesday or Assignments?
        • Object Oriented Programming Overview
        • O...
Object Basics




Thursday, January 7, 2010   7
OOP Vocabulary
        • Class: defines the grouping of data and code,
                 the “type” of an object
        • ...
OOP Vocabulary
        • Encapsulation
             ■   keep implementation private and separate from interface
        • ...
Inheritance

             Superclass
                                       NSObject



                                  ...
Inheritance

                                                                 Memory
             Superclass
             ...
Inheritance

                                                                 Memory
             Superclass
             ...
Inheritance

                                                                 Memory
             Superclass
             ...
More OOP Info?
        • Drop by office hours to talk about basics of OOP
        • Tons of books and articles on OOP
    ...
Objective-C




Thursday, January 7, 2010   12
Objective-C
        • Strict superset of C
             ■ Mix C with ObjC
             ■ Or even C++ with ObjC (usually re...
Syntax Additions
        • Small number of additions
        • Some new types
             ■ Anonymous object
            ...
Dynamic Runtime
        • Object creation
             ■ All objects allocated out of the heap
             ■ No stack bas...
OOP with ObjC




Thursday, January 7, 2010   16
Classes and Instances
        • In Objective-C, classes and instances are both objects
        • Class is the blueprint to...
Classes and Instances
        • In Objective-C, classes and instances are both objects
        • Class is the blueprint to...
Classes and Objects
        • Classes declare state and behavior
        • State (data) is maintained using instance varia...
OOP From ObjC Perspective
        • Everybody has their own spin on OOP
             ■   Apple is no different
        • F...
Messaging syntax




Thursday, January 7, 2010   20
Class and Instance Methods
        • Instances respond to instance methods
          - (id)init;
          - (float)height...
Message syntax




Thursday, January 7, 2010   22
Message syntax
         [receiver message]




Thursday, January 7, 2010     22
Message syntax
         [receiver message]

         [receiver message:argument]




Thursday, January 7, 2010            ...
Message syntax
         [receiver message]

         [receiver message:argument]

         [receiver message:arg1 andArg:a...
Message examples
         Person *voter; //assume this exists

         [voter castBallot];

         int theAge = [voter ...
Method definition examples
         Person *voter; //assume this exists
         - (void)castBallot;
         [voter castB...
Terminology
        • Message expression
                   [receiver method: argument]

        • Message
               ...
Dot Syntax
        • Objective-C 2.0 introduced dot syntax
        • Convenient shorthand for invoking accessor methods
  ...
Objective-C Types




Thursday, January 7, 2010   27
Dynamic and static typing
       • Dynamically-typed object
         ! id anObject
             ■ Just id
             ■ N...
The null object pointer
       • Test for nil explicitly
         ! if (person == nil) return;
       • Or implicitly
    ...
BOOL typedef
       • When ObjC was developed, C had no boolean type (C99
         introduced one)
       • ObjC uses a ty...
Selectors identify methods by name
       • A selector has type SEL
         ! SEL action = [button action];
         ! [b...
Working with selectors
       • You can determine if an object responds to a given selector
         ! id obj;
         ! ...
Working with Classes




Thursday, January 7, 2010      33
Class Introspection
        • You can ask an object about its class
         ! Class myClass = [myObject class];
         ...
Working with Objects




Thursday, January 7, 2010      35
Identity versus Equality
        • Identity—testing equality of the pointer values
               if (object1 == object2) ...
-description
        • NSObject implements -description
               - (NSString *)description;
        • Objects repres...
Foundation Classes




Thursday, January 7, 2010    38
Foundation Framework
        • Value and collection classes
        • User defaults
        • Archiving
        • Notifica...
NSObject
        • Root class
        • Implements many basics
             ■ Memory management
             ■ Introspecti...
NSString
        • General-purpose Unicode string support
             ■   Unicode is a coding system which represents all...
String Constants
       • In C constant strings are
         ! ! ! “simple”
       • In ObjC, constant strings are
       ...
Format Strings
        • Similar to printf, but with %@ added for objects
          	 NSString *aString = @”Johnny”;
     ...
NSString
        • Often ask an existing string for a new string with modifications
              - (NSString *)stringByAp...
NSString
        • Common NSString methods
               - (BOOL)isEqualToString:(NSString *)string;
               - (BO...
NSMutableString
        • NSMutableString subclasses NSString
        • Allows a string to be modified
        • Common NS...
Collections
        • Array - ordered collection of objects
        • Dictionary - collection of key-value pairs
        •...
NSArray
       • Common NSArray methods
         ! + arrayWithObjects:(id)firstObj, ...;      // nil terminated!!!
       ...
NSMutableArray
        • NSMutableArray subclasses NSArray
        • So, everything in NSArray
        • Common NSMutableA...
NSDictionary
       • Common NSDictionary methods
         + dictionaryWithObjectsAndKeys: (id)firstObject, ...;
         ...
NSMutableDictionary
       • NSMutableDictionary subclasses NSDictionary
       • Common NSMutableDictionary methods
     ...
NSSet
       • Unordered collection of objects
       • Common NSSet methods
         ! + setWithObjects:(id)firstObj, ......
NSMutableSet
        • NSMutableSet subclasses NSSet
       • Common NSMutableSet methods
         ! + (NSMutableSet *)set...
Enumeration
        • Consistent way of enumerating over objects in collections
        • Use with NSArray, NSDictionary, ...
NSNumber
       • In Objective-C, you typically use standard C number types
       • NSNumber is used to wrap C number typ...
Other Classes
        • NSData / NSMutableData
             ■   Arbitrary sets of bytes
        • NSDate / NSCalendarDate
...
Getting some objects
        • Until we talk about memory management:
             ■   Use class factory methods
         ...
More ObjC Info?
        • http://developer.apple.com/documentation/Cocoa/
          Conceptual/ObjectiveC
        • Concep...
Questions?




Thursday, January 7, 2010   59
Upcoming SlideShare
Loading in...5
×

02 Objective C

3,187

Published on

Published in: Technology, News & Politics
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,187
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
136
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Transcript of "02 Objective C"

  1. 1. CS193P - Lecture 2 iPhone Application Development Objective-C Foundation Framework Thursday, January 7, 2010 1
  2. 2. Announcements Thursday, January 7, 2010 2
  3. 3. Announcements • Enrollment process is almost done Thursday, January 7, 2010 2
  4. 4. Announcements • Enrollment process is almost done Thursday, January 7, 2010 2
  5. 5. Announcements • Enrollment process is almost done • Shooting for end of day Friday Thursday, January 7, 2010 2
  6. 6. Announcements • Enrollment process is almost done • Shooting for end of day Friday • Please drop the class in Axess if you are not enrolled. Thursday, January 7, 2010 2
  7. 7. Office Hours • David Jacobs ■ Mondays 4-6pm: Gates 360 • Paul Salzman ■ Some time. Best to try all possible times until you hit it ■ Some place, probably in Gates. Just come by and yell real loud Thursday, January 7, 2010 3
  8. 8. iPhone SDK Thursday, January 7, 2010 4
  9. 9. iPhone SDK Thursday, January 7, 2010 4
  10. 10. iPhone SDK • Enrolled students will be invited to developer program ■ Login to Program Portal ■ Request a Certificate ■ Download and install the SDK Thursday, January 7, 2010 4
  11. 11. iPhone SDK • Enrolled students will be invited to developer program ■ Login to Program Portal ■ Request a Certificate ■ Download and install the SDK Thursday, January 7, 2010 4
  12. 12. iPhone SDK • Enrolled students will be invited to developer program ■ Login to Program Portal ■ Request a Certificate ■ Download and install the SDK • Will need your Device UDIDs - details to come Thursday, January 7, 2010 4
  13. 13. iPhone SDK • Enrolled students will be invited to developer program ■ Login to Program Portal ■ Request a Certificate ■ Download and install the SDK • Will need your Device UDIDs - details to come Thursday, January 7, 2010 4
  14. 14. iPhone SDK • Enrolled students will be invited to developer program ■ Login to Program Portal ■ Request a Certificate ■ Download and install the SDK • Will need your Device UDIDs - details to come • Auditors will need to sign up for Developer Program independently ■ Free for Simulator development ■ $99 for on-device development Thursday, January 7, 2010 4
  15. 15. Getting Help • The assignment walks you through it • Key spots to look ■ API & Conceptual Docs in Xcode ■ Class header files ■ Docs, sample code, tech notes on Apple Developer Connection (ADC) site ■ http://developer.apple.com ■ Dev site uses Google search Thursday, January 7, 2010 5
  16. 16. Today’s Topics • Questions from Tuesday or Assignments? • Object Oriented Programming Overview • Objective-C Language • Common Foundation Classes Thursday, January 7, 2010 6
  17. 17. Object Basics Thursday, January 7, 2010 7
  18. 18. OOP Vocabulary • Class: defines the grouping of data and code, the “type” of an object • Instance: a specific allocation of a class • Method: a “function” that an object knows how to perform • Instance Variable (or “ivar”): a specific piece of data belonging to an object Thursday, January 7, 2010 8
  19. 19. OOP Vocabulary • Encapsulation ■ keep implementation private and separate from interface • Polymorphism ■ different objects, same interface • Inheritance ■ hierarchical organization, share code, customize or extend behaviors Thursday, January 7, 2010 9
  20. 20. Inheritance Superclass NSObject UIControl Subclass UIButton UITextField • Hierarchical relation between classes • Subclass “inherit” behavior and data from superclass • Subclasses can use, augment or replace superclass methods Thursday, January 7, 2010 10
  21. 21. Inheritance Memory Superclass NSObject management UIControl Subclass UIButton UITextField • Hierarchical relation between classes • Subclass “inherit” behavior and data from superclass • Subclasses can use, augment or replace superclass methods Thursday, January 7, 2010 10
  22. 22. Inheritance Memory Superclass NSObject management Generic UIControl behaviors Subclass UIButton UITextField • Hierarchical relation between classes • Subclass “inherit” behavior and data from superclass • Subclasses can use, augment or replace superclass methods Thursday, January 7, 2010 10
  23. 23. Inheritance Memory Superclass NSObject management Generic UIControl behaviors Specific Subclass UIButton UITextField behaviors • Hierarchical relation between classes • Subclass “inherit” behavior and data from superclass • Subclasses can use, augment or replace superclass methods Thursday, January 7, 2010 10
  24. 24. More OOP Info? • Drop by office hours to talk about basics of OOP • Tons of books and articles on OOP • Most Java or C++ book have OOP introductions • Objective-C 2.0 Programming Language ■ http://developer.apple.com/documentation/Cocoa/Conceptual/ ObjectiveC Thursday, January 7, 2010 11
  25. 25. Objective-C Thursday, January 7, 2010 12
  26. 26. Objective-C • Strict superset of C ■ Mix C with ObjC ■ Or even C++ with ObjC (usually referred to as ObjC++) • A very simple language, but some new syntax • Single inheritance, classes inherit from one and only one superclass • Protocols define behavior that cross classes • Dynamic runtime • Loosely typed, if you’d like Thursday, January 7, 2010 13
  27. 27. Syntax Additions • Small number of additions • Some new types ■ Anonymous object ■ Class ■ Selectors • Syntax for defining classes • Syntax for message expressions Thursday, January 7, 2010 14
  28. 28. Dynamic Runtime • Object creation ■ All objects allocated out of the heap ■ No stack based objects • Message dispatch • Introspection Thursday, January 7, 2010 15
  29. 29. OOP with ObjC Thursday, January 7, 2010 16
  30. 30. Classes and Instances • In Objective-C, classes and instances are both objects • Class is the blueprint to create instances Thursday, January 7, 2010 17
  31. 31. Classes and Instances • In Objective-C, classes and instances are both objects • Class is the blueprint to create instances method Class method method method Data method method method method Data method method method method method method Data method Data method method method Data method method method method Data method method Thursday, January 7, 2010 17
  32. 32. Classes and Objects • Classes declare state and behavior • State (data) is maintained using instance variables • Behavior is implemented using methods • Instance variables typically hidden ■ Accessible only using getter/setter methods Thursday, January 7, 2010 18
  33. 33. OOP From ObjC Perspective • Everybody has their own spin on OOP ■ Apple is no different • For the spin on OOP from an ObjC perspective: ■ Read the “Object-Oriented Programming with Objective-C” document ■ http://developer.apple.com/iphone/library/documentation/ Cocoa/Conceptual/OOP_ObjC Thursday, January 7, 2010 19
  34. 34. Messaging syntax Thursday, January 7, 2010 20
  35. 35. Class and Instance Methods • Instances respond to instance methods - (id)init; - (float)height; - (void)walk; • Classes respond to class methods + (id)alloc; + (id)person; + (Person *)sharedPerson; Thursday, January 7, 2010 21
  36. 36. Message syntax Thursday, January 7, 2010 22
  37. 37. Message syntax [receiver message] Thursday, January 7, 2010 22
  38. 38. Message syntax [receiver message] [receiver message:argument] Thursday, January 7, 2010 22
  39. 39. Message syntax [receiver message] [receiver message:argument] [receiver message:arg1 andArg:arg2] Thursday, January 7, 2010 22
  40. 40. Message examples Person *voter; //assume this exists [voter castBallot]; int theAge = [voter age]; [voter setAge:21]; if ([voter canLegallyVote]) { // do something voter-y } [voter registerForState:@"CA" party:@"Independant"]; NSString *name = [[voter spouse] name]; Thursday, January 7, 2010 23
  41. 41. Method definition examples Person *voter; //assume this exists - (void)castBallot; [voter castBallot]; - (int)age; int theAge = [voter age]; - (void)setAge:(int)age; [voter setAge:21]; - (BOOL)canLegallyVote; if ([voter canLegallyVote]) { // do something voter-y } - (void)registerForState:(NSString*)state party:(NSString*)party; [voter registerForState:@"CA" party:@"Independant"]; - (Person*)spouse; - (NSString*)name; NSString *name = [[voter spouse] name]; Thursday, January 7, 2010 24
  42. 42. Terminology • Message expression [receiver method: argument] • Message [receiver method: argument] • Selector [receiver method: argument] • Method The code selected by a message Thursday, January 7, 2010 25
  43. 43. Dot Syntax • Objective-C 2.0 introduced dot syntax • Convenient shorthand for invoking accessor methods float height = [person height]; float height = person.height; [person setHeight:newHeight]; person.height = newHeight; • Follows the dots... [[person child] setHeight:newHeight]; // exactly the same as person.child.height = newHeight; Thursday, January 7, 2010 26
  44. 44. Objective-C Types Thursday, January 7, 2010 27
  45. 45. Dynamic and static typing • Dynamically-typed object ! id anObject ■ Just id ■ Not id * (unless you really, really mean it...) • Statically-typed object ! Person *anObject • Objective-C provides compile-time, not runtime, type checking • Objective-C always uses dynamic binding Thursday, January 7, 2010 28
  46. 46. The null object pointer • Test for nil explicitly ! if (person == nil) return; • Or implicitly ! if (!person) return; • Can use in assignments and as arguments if expected ! person = nil; ! [button setTarget: nil]; • Sending a message to nil? ! person = nil; ! [person castBallot]; Thursday, January 7, 2010 29
  47. 47. BOOL typedef • When ObjC was developed, C had no boolean type (C99 introduced one) • ObjC uses a typedef to define BOOL as a type BOOL flag = NO; • Macros included for initialization and comparison: YES and NO if (flag == YES) if (flag) if (!flag) if (flag != YES) flag = YES; flag = 1; Thursday, January 7, 2010 30
  48. 48. Selectors identify methods by name • A selector has type SEL ! SEL action = [button action]; ! [button setAction:@selector(start:)]; • Conceptually similar to function pointer • Selectors include the name and all colons, for example: ! -(void)setName:(NSString *)name age:(int)age; would have a selector: ! SEL sel = @selector(setName:age:); Thursday, January 7, 2010 31
  49. 49. Working with selectors • You can determine if an object responds to a given selector ! id obj; ! SEL sel = @selector(start:); ! if ([obj respondsToSelector:sel]) { ! [obj performSelector:sel withObject:self] ! } • This sort of introspection and dynamic messaging underlies many Cocoa design patterns ! -(void)setTarget:(id)target; ! -(void)setAction:(SEL)action; Thursday, January 7, 2010 32
  50. 50. Working with Classes Thursday, January 7, 2010 33
  51. 51. Class Introspection • You can ask an object about its class ! Class myClass = [myObject class]; ! NSLog(@"My class is %@", [myObject className]); • Testing for general class membership (subclasses included): ! if ([myObject isKindOfClass:[UIControl class]]) { ! // something ! } • Testing for specific class membership (subclasses excluded): ! if ([myObject isMemberOfClass:[NSString class]]) { ! // something string specific ! } Thursday, January 7, 2010 34
  52. 52. Working with Objects Thursday, January 7, 2010 35
  53. 53. Identity versus Equality • Identity—testing equality of the pointer values if (object1 == object2) { NSLog(@"Same exact object instance"); } • Equality—testing object attributes if ([object1 isEqual: object2]) { NSLog(@"Logically equivalent, but may be different object instances"); } Thursday, January 7, 2010 36
  54. 54. -description • NSObject implements -description - (NSString *)description; • Objects represented in format strings using %@ • When an object appears in a format string, it is asked for its description [NSString stringWithFormat: @”The answer is: %@”, myObject]; • You can log an object’s description with: NSLog([anObject description]); • Your custom subclasses can override description to return more specific information Thursday, January 7, 2010 37
  55. 55. Foundation Classes Thursday, January 7, 2010 38
  56. 56. Foundation Framework • Value and collection classes • User defaults • Archiving • Notifications • Undo manager • Tasks, timers, threads • File system, pipes, I/O, bundles Thursday, January 7, 2010 39
  57. 57. NSObject • Root class • Implements many basics ■ Memory management ■ Introspection ■ Object equality Thursday, January 7, 2010 40
  58. 58. NSString • General-purpose Unicode string support ■ Unicode is a coding system which represents all of the world’s languages • Consistently used throughout Cocoa Touch instead of “char *” • Without doubt the most commonly used class • Easy to support any language in the world with Cocoa Thursday, January 7, 2010 41
  59. 59. String Constants • In C constant strings are ! ! ! “simple” • In ObjC, constant strings are ! @“just as simple” • Constant strings are NSString instances ! NSString *aString = @”Hello World!”; Thursday, January 7, 2010 42
  60. 60. Format Strings • Similar to printf, but with %@ added for objects NSString *aString = @”Johnny”; NSString *log = [NSString stringWithFormat: @”It’s ‘%@’”, aString]; log would be set to It’s ‘Johnny’ • Also used for logging NSLog(@”I am a %@, I have %d items”, [array className], [array count]); would log something like: I am a NSArray, I have 5 items Thursday, January 7, 2010 43
  61. 61. NSString • Often ask an existing string for a new string with modifications - (NSString *)stringByAppendingString:(NSString *)string; - (NSString *)stringByAppendingFormat:(NSString *)string; - (NSString *)stringByDeletingPathComponent; • Example: NSString *myString = @”Hello”; NSString *fullString; fullString = [myString stringByAppendingString:@” world!”]; fullString would be set to Hello world! Thursday, January 7, 2010 44
  62. 62. NSString • Common NSString methods - (BOOL)isEqualToString:(NSString *)string; - (BOOL)hasPrefix:(NSString *)string; - (int)intValue; - (double)doubleValue; • Example: NSString *myString = @”Hello”; NSString *otherString = @”449”; if ([myString hasPrefix:@”He”]) { // will make it here } if ([otherString intValue] > 500) { // won’t make it here } Thursday, January 7, 2010 45
  63. 63. NSMutableString • NSMutableString subclasses NSString • Allows a string to be modified • Common NSMutableString methods + (id)string; - (void)appendString:(NSString *)string; - (void)appendFormat:(NSString *)format, ...; NSMutableString *newString = [NSMutableString string]; [newString appendString:@”Hi”]; [newString appendFormat:@”, my favorite number is: %d”, [self favoriteNumber]]; Thursday, January 7, 2010 46
  64. 64. Collections • Array - ordered collection of objects • Dictionary - collection of key-value pairs • Set - unordered collection of unique objects • Common enumeration mechanism • Immutable and mutable versions ■ Immutable collections can be shared without side effect ■ Prevents unexpected changes ■ Mutable objects typically carry a performance overhead Thursday, January 7, 2010 47
  65. 65. NSArray • Common NSArray methods ! + arrayWithObjects:(id)firstObj, ...; // nil terminated!!! ! - (unsigned)count; ! - (id)objectAtIndex:(unsigned)index; ! - (unsigned)indexOfObject:(id)object; • NSNotFound returned for index if not found NSArray *array = [NSArray arrayWithObjects:@”Red”, @”Blue”, @”Green”, nil]; if ([array indexOfObject:@”Purple”] == NSNotFound) { NSLog (@”No color purple”); } • Be careful of the nil termination!!! Thursday, January 7, 2010 48
  66. 66. NSMutableArray • NSMutableArray subclasses NSArray • So, everything in NSArray • Common NSMutableArray Methods + (NSMutableArray *)array; - (void)addObject:(id)object; - (void)removeObject:(id)object; - (void)removeAllObjects; - (void)insertObject:(id)object atIndex:(unsigned)index; NSMutableArray *array = [NSMutableArray array]; [array addObject:@”Red”]; [array addObject:@”Green”]; [array addObject:@”Blue”]; [array removeObjectAtIndex:1]; Thursday, January 7, 2010 49
  67. 67. NSDictionary • Common NSDictionary methods + dictionaryWithObjectsAndKeys: (id)firstObject, ...; - (unsigned)count; - (id)objectForKey:(id)key; • nil returned if no object found for given key NSDictionary *colors = [NSDictionary dictionaryWithObjectsAndKeys:@”Red”, @”Color 1”, @”Green”, @”Color 2”, @”Blue”, @”Color 3”, nil]; NSString *firstColor = [colors objectForKey:@”Color 1”]; if ([colors objectForKey:@”Color 8”]) { // won’t make it here } Thursday, January 7, 2010 50
  68. 68. NSMutableDictionary • NSMutableDictionary subclasses NSDictionary • Common NSMutableDictionary methods + (NSMutableDictionary *)dictionary; - (void)setObject:(id)object forKey:(id)key; - (void)removeObjectForKey:(id)key; - (void)removeAllObjects; NSMutableDictionary *colors = [NSMutableDictionary dictionary]; [colors setObject:@”Orange” forKey:@”HighlightColor”]; Thursday, January 7, 2010 51
  69. 69. NSSet • Unordered collection of objects • Common NSSet methods ! + setWithObjects:(id)firstObj, ...; // nil terminated ! - (unsigned)count; ! - (BOOL)containsObject:(id)object; Thursday, January 7, 2010 52
  70. 70. NSMutableSet • NSMutableSet subclasses NSSet • Common NSMutableSet methods ! + (NSMutableSet *)set; ! - (void)addObject:(id)object; ! - (void)removeObject:(id)object; ! - (void)removeAllObjects; ! - (void)intersectSet:(NSSet *)otherSet; ! - (void)minusSet:(NSSet *)otherSet; Thursday, January 7, 2010 53
  71. 71. Enumeration • Consistent way of enumerating over objects in collections • Use with NSArray, NSDictionary, NSSet, etc. NSArray *array = ... ; // assume an array of People objects // old school Person *person; int count = [array count]; for (i = 0; i < count; i++) { person = [array objectAtIndex:i]; NSLog([person description]); } // new school for (Person *person in array) { NSLog([person description]); } Thursday, January 7, 2010 54
  72. 72. NSNumber • In Objective-C, you typically use standard C number types • NSNumber is used to wrap C number types as objects • Subclass of NSValue • No mutable equivalent! • Common NSNumber methods + (NSNumber *)numberWithInt:(int)value; + (NSNumber *)numberWithDouble:(double)value; - (int)intValue; - (double)doubleValue; Thursday, January 7, 2010 55
  73. 73. Other Classes • NSData / NSMutableData ■ Arbitrary sets of bytes • NSDate / NSCalendarDate ■ Times and dates Thursday, January 7, 2010 56
  74. 74. Getting some objects • Until we talk about memory management: ■ Use class factory methods ■ NSString’s +stringWithFormat: ■ NSArray’s +array ■ NSDictionary’s +dictionary ■ Or any method that returns an object except alloc/init or copy. Thursday, January 7, 2010 57
  75. 75. More ObjC Info? • http://developer.apple.com/documentation/Cocoa/ Conceptual/ObjectiveC • Concepts in Objective C are applicable to any other OOP language Thursday, January 7, 2010 58
  76. 76. Questions? Thursday, January 7, 2010 59
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×