Student Profile Sample - We help schools to connect the data they have, with ...
Arrays in Objective-C
1. Computer Science Large Practical:
Arrays in Objective-C
Stephen Gilmore
School of Informatics
Friday 2nd November, 2012
Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 2nd November, 2012 1 / 16
2. Experience report
The Desktop Team, in the University’s Information Services
department have asked for feedback from you regarding your
experiences (good or bad!) with Xcode in the Main Library IS Open
Access Lab.
This will help inform their plans for future academic years.
What has been your experience?
Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 2nd November, 2012 2 / 16
3. Programming with arrays in Objective-C
Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 2nd November, 2012 3 / 16
4. Inspecting an array
Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 2nd November, 2012 4 / 16
5. The XML representation
Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 2nd November, 2012 5 / 16
6. Sorting an array
Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 2nd November, 2012 6 / 16
7. The sorted array
Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 2nd November, 2012 7 / 16
8. The output in the console
Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 2nd November, 2012 8 / 16
9. Everything OK? What about “Build and Analyze”?
Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 2nd November, 2012 9 / 16
10. Handling arrays (1/2)
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc]
init];
NSLog(@"Hello, arrays!");
NSArray * myArray = [[NSArray alloc]
initWithObjects:@"foo",@"bar",@"baz",nil];
for(NSString * myStr in myArray) {
NSLog(@"-- %@", myStr);
}
[myArray writeToFile:@"myArray.plist" atomically:YES];
Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 2nd November, 2012 10 / 16
12. Object allocation and arrays
Arrays in Objective-C are not generic arrays: they can contain
different kinds of objects.
The nil value at the end is a terminator, signalling the end of the
array.
You can release an object as soon as you add it to an array because
the array allocates its own memory for the object by calling retain on
all objects which are added to it.
arrayWithObjects auto releases from memory so you do not have
to release the array yourself.
If we replace [NSArray alloc] initWithObjects with
arrayWithObjects then this should solve our memory leak.
Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 2nd November, 2012 12 / 16
13. “Build and Analyze” finds no potential leaks now
Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 2nd November, 2012 13 / 16
14. Mutable arrays
NSArray objects are not mutable so we cannot update their contents.
To have an array which we can update we should use
NSMutableArray.
Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 2nd November, 2012 14 / 16
15. Declaring and using mutable arrays
Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 2nd November, 2012 15 / 16
16. Output from the program
Stephen Gilmore (School of Informatics) Computer Science Large Practical Friday 2nd November, 2012 16 / 16