O'Reilly logo

MacRuby: The Definitive Guide by Matt Aimonetti

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 8. One Step Deeper

In Chapter 7, we looked at the basics of MacRuby. You are now ready to get started with developing complex apps. Depending on the way you approach learning, you might want to first jump to hacking or you might want to first learn more advanced techniques. This chapter will focus on some advanced aspects of MacRuby that will help you go deeper in your MacRuby knowledge. Feel free to skip this chapter and come back to it later on if that makes more sense to you.

Selectors

In Objective-C, methods are identified by selectors. A selector is composed of the name of the method and keywords specifying the arguments to the method. If you have two methods that are the same except for the number and/or kind of arguments they accept, Objective-C treats them as separate methods. In Ruby, a method is specified by its name alone. The sort of arguments passed to a method have no bearing on which Ruby method is called. Therefore, to support the Objective-C method calling style, MacRuby extends Ruby to create Objective-C selectors from the arguments passed to a function. The examples in this chapter are meant to explain MacRuby’s method overloading, (see the Wikipedia entry for method overloading at http://en.wikipedia.org/wiki/Method_overloading), which is not something Ruby programmers normally deal with. Look carefully at the examples. The method names are always the same, and only the expected parameters are different.

Let’s imagine that we have a Player class and that ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required