Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does this syntax mean in Objective-C?

Tags:

objective-c

Consider the following:

- (id)initWithTitle:(NSString *)newTitle
     boxOfficeGross:(NSNumber *)newBoxOfficeGross
            summary:(NSString *)newSummary;

What does this mean? I've guessed that it returns id, and takes three params, but what does each part of the syntax mean? I come from a Ruby/JS background and am finding this syntax a little hard to grasp.

like image 632
Neil Middleton Avatar asked Jan 23 '23 16:01

Neil Middleton


2 Answers

It's an instance method (ie, not a static or "class" method) called initWithTitle:boxOfficeGross:summary: that returns an object of type id (generic object). It takes three parameters: a String object, a Number object, and another String object.

You invoke it like this:

NSNumber * gross = [NSNumber numberWithInteger:1878025999]
Movie * avatar = [[Movie alloc] initWithTitle:@"Avatar"
                               boxOfficeGross:gross
                                      summary:@"Pocahontas in the 22nd century"];
//or you can do it all on one line, like so:
Movie * avatar = [[Movie alloc] initWithTitle:@"Avatar" boxOfficeGross:gross summary:@"Pocahontas in the 22nd century"];
like image 129
Dave DeLong Avatar answered Feb 04 '23 05:02

Dave DeLong


  • - means that the method is an instance method, not a class method.
  • (id) means it returns an id, as you surmised.
  • initWithTitle:, boxOfficeGross:, and summary: are part of the method name. In Objective-C, each parameter generally has an associated method name part. The entire name of the method is initWithTitle:boxOfficeGross:summary.
  • (NSString *), etc., denote the type of the parameter.
  • newTitle, etc., is the name of the parameter.
like image 36
mipadi Avatar answered Feb 04 '23 07:02

mipadi