View Full Version : In doubt

Jul 28, 2012, 02:54 AM
Can you please explain the code below?

-(id)initWithName:(NSString *)newName atFrequency:(double)newFrequency;

Jul 28, 2012, 12:25 PM
It is a declaration of an Objective-C object instance method with 2 parameters. Presumably it initializes a previously allocated object.

Jul 28, 2012, 02:17 PM
Can you please explain the code below?

-(id)initWithName:(NSString *)newName atFrequency:(double)newFrequency;

mfram explained it well, but I thought I'd break it down by component.
This indicates an instance or object method. This means you call this method on an instance of this class. The other option is a + which you call on the class itself. This is used for utility methods, object factories, etc.
This indicates the return type, which is id in this case. id is the most generic object pointer. It can point to any sort of object.
This is part of the method name. Objective-C methods have "segmented" names with arguments interspersed so each argument has a label, making it easier to know what the argument does, rather than just its type.
(NSString *)
This indicates the type of the first argument. NSString is the Cocoa string implementation. The * indicates that the type is a pointer to an NSString. You will see this for every object type, as Objective-C dynamically allocates all objects on the heap, so you never have a "local" object used without a pointer.
This is the name of the first argument, and what will be used in the method to refer to it.
This is the second segment of the method name, the type of the second argument (double is a double precision floating point value. It is a primitive type.), and the name of the second argument.