1. Welcome to the new MacRumors forums. See our announcement and read our FAQ

In doubt

Discussion in 'Mac Programming' started by Prasoon, Jul 28, 2012.

  1. Prasoon, Jul 28, 2012
    Last edited by a moderator: Jul 28, 2012

    macrumors newbie

    #1
    Can you please explain the code below?

    Code:
    -(id)initWithName:(NSString *)newName atFrequency:(double)newFrequency;
     
  2. macrumors 6502a

    #2
    It is a declaration of an Objective-C object instance method with 2 parameters. Presumably it initializes a previously allocated object.
     
  3. macrumors 68040

    lee1210

    #3
    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.
    (id)
    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.
    initWithName:
    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.
    newName
    This is the name of the first argument, and what will be used in the method to refer to it.
    atFrequency:(double)newFrequency
    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.

    -Lee
     

Share This Page