Methods are similar to functions in C. There are two types of methods.

  1. Class Method
  2. Instance Method

Class Method

Class methods can be accessed directly without object instantiation. A sample class method is shown below.

@interface SampleClass:NSObject

/* Class method begins with + sign.
Return type follow in bracket.
We then have the method name
Next we have optional parameter
*/
+ (void)sampleClassMethod;

@end

@implementation SampleClass

+ (void)sampleClassMethod{
	NSLog(@"Class method");
}

@end

int main(int argc, const char * argv[])
{
    //  Autoreleasepool used in main for automatic memory management.
    @autoreleasepool {
        [SampleClass sampleClassMethod];
        
    }
    return 0;
}

Instance Method

Instance methods can be accessed only with objects. A sample is shown below.

@interface SampleClass:NSObject

/* Instance method begins with - sign.
Return type follow in bracket.
We then have the method name
Next we have optional parameter
*/
- (void)sampleClassMethod;

@end

@implementation SampleClass

- (void)sampleClassMethod{
	NSLog(@"Class method");
}

@end

int main(int argc, const char * argv[])
{
    //  Autoreleasepool used in main for automatic memory management.
    @autoreleasepool {
     	SampleClass *sampleClass = [[SampleClass alloc] init];
        [sampleClass sampleClassMethod];
    }
    return 0;
}

Methods with arguments

Methods can take multiple parameters. A sample is shown below.

@interface SampleClass:NSObject

/* Instance method begins with - sign.
Return type follow in bracket.
You then have the method name
Next you have optional parameters
You can see withNumber2: is the joining word 
making it more readable while accessing the method
*/
- (void)addNumber1:(int) number1 withNumber2:(int) number2;

@end

@implementation SampleClass

- (void)addNumber1:(int) number1 withNumber2:(int) number2{
	NSLog(@"The sum is %d",number1+number2);
}

@end

int main(int argc, const char * argv[])
{
    //  Autoreleasepool used in main for automatic memory management.
    @autoreleasepool {
     	SampleClass *sampleClass = [[SampleClass alloc] init];
        [sampleClass addNumber1:10 withNumber2:20];
    }
    return 0;
}

You can see in the above program how we define method with multiple arguments. You can see there is a joining word second parameter onwards to make it more readable.