The enterDigit: Action Method
The enterDigit: method we added to the Controller class is invoked whenever a digit button is clicked. Let’s look at it closely to see how it works.
- enterDigit:sender { if (enterFlag) { Y = X; X = 0.0; enterFlag = NO; } X = (X*10.0) + [ [sender selectedCell] tag]; [self displayX]; return self; }
The first part of the function is self-explanatory: if the
enterFlag
instance variable is set, the value of
the X register is copied into the Y register and both the X register
and enterFlag
are cleared. Note that the
scope
of
instance variables such as enterFlag
is the entire
class definition. All methods within a class have access to all
instance variables defined in that class.
The next line contains the magic: the value in the X register is multiplied by 10 and added to the returned value, [[sender selectedCell] tag]. This performs a base-10 left-shift operation on X and then adds the last digit pressed. Let’s look at this nested method expression in pieces.
[sender
selectedCell]
sends the selectedCell message to the variable
sender
. When the enterDigit: method is invoked (called),
sender
is set to the id of the object that sent
the message — in this case, the NSMatrix object. Clicking a
button in an NSMatrix selects that button. Thus, the expression
[sender selectedCell] returns the id
of the NSButtonCell object for the button that was clicked. [[sender selectedCell] tag] then sends the
tag message to the NSButtonCell object; this method asks the ...
Get Building Cocoa Applications: A Step by Step Guide now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.