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

Selector Projector

Because Objective-C is a dynamic language, it resolves methods at runtime, not at compile time. This setup provides a subtle but powerful mechanism: You can pass methods as parameters to other methods.

Selectors are special variables that identify which method implementation to use for an object instance. The Objective-C runtime uses internal data structures to match a message's selector to the code that gets executed.

Tip

If you've used other languages, you might want to think of a selector as a dynamic function pointer. The selector's name automatically points to the right function and adapts to whichever class it's used with.

This behavior lets you implement polymorphism in Objective-C. If you have three classes named Circle, Triangle, and Square, you can send a selector for a draw method to instances of each of these classes, resulting in different implementations for drawing the shape being executed.

Every selector is defined with a type of SEL. You can assign the selector variable with one of two methods. At compile time, you can use a compiler directive to create the value:

SEL mySelector = @selector(moreAwesomeThanEver);

At runtime, you can use a function that takes a single NSString parameter and looks up the selector:

SEL mySelector = NSSelectorFromString("moreAwesomeThanEver");

The mySelector variable now contains a shortcut for the –moreAwesomeThanEver message. And here's where it gets interesting: You can use that variable to execute the method. So instead ...

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