Table of Contents
Previous Section
Methods
To define a new method, simply put its implementation in the script file. You don't need to declare it ahead of time. For example, this is the definition of a method from the Main component in the Visitors example:
- recordMe {
if ([aName length]) {
[[self application] setLastVisitor:aName];
[self setAName:@""]; // clear the text field
}
}
Methods can take arguments. To define a method that takes arguments, you place the argument name after a colon (:). For example, the following method takes two arguments. It adds the two arguments together and returns the result:
- addFirstValue:firstValue toSecondValue:secondValue {
id result;
result = firstValue + secondValue;
return result;
}
The strings that appear to the left of the colons are part of the method name. The method above is named addFirstValue:toSecondValue:. It takes two arguments, which it calls firstValue and secondValue. If you want, you can add type information for the return values and parameter values. For example, the following method, subtractFirstValue:fromSecondValue:, subtracts one number from another and returns the result:
- (NSNumber *)subtractFirstValue:(NSNumber *)firstValue
fromSecondValue:(NSNumber *)secondValue {
NSNumber *result;
result = secondValue - firstValue;
return result;
}
In these examples, note the following:
- Type information is optional. When there is no type, id is assumed.
- Explicitly specifying the id type is not allowed:
// NO!! This won't work.
- (id)aMethod:(id)anArg { ... }
- A return type of void is not allowed:
// This won't work either.
- (void) aMethod:(NSString *)anArg { ... }
Both example methods return a value, stored in result. If a method doesn't return a meaningful value, you don't have to include a return statement (and, as stated above, even if a method returns no value you shouldn't declare it as returning void).
Table of Contents
Next Section