Skip to Content
iPhone App Development: The Missing Manual
book

iPhone App Development: The Missing Manual

by Craig Hockenberry
May 2010
Beginner
352 pages
9h 44m
English
O'Reilly Media, Inc.
Content preview from iPhone App Development: The Missing Manual

Mutable Versus Immutable

While looking at NSString, you may have noticed that the content of the string is never modified directly. If you've checked out the NSArray class, you might be concerned that there doesn't appear to be any way to add or remove items to the array. Don't worry; the folks who designed Cocoa weren't that lazy!

Many of the classes for managing data are broken in two: one class to manage the data that never changes and a subclass for the part that can change. If the class name for the constant data is NSString, the class name NSMutableString is used for the one that can be modified.

Why use two classes when they could have just implemented one? For the same reason that constant values in other code are a good thing: You know that the data is never going to change as it's processed. You can make assumptions that you wouldn't have otherwise made.

Note

If you've ever had an array's size change as you're iterating over its elements, you know the pain of the bugs that these bad assumptions can incur.

When you're building your own classes, you'll often have to choose which of these two variants to use for your instance variables. A good rule of thumb is to use an immutable object like NSString or NSNumber when the value is replaced entirely. When you were making awesome strings, there would have been no point in using an NSMutableString since the –setOriginalString: method updated the whole string rather than making changes to individual characters.

Collections, on the other ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Beginning iPhone Development with SwiftUI: Exploring the iOS SDK

Beginning iPhone Development with SwiftUI: Exploring the iOS SDK

Wally Wang

Publisher Resources

ISBN: 9780596809997Errata Page