Passing parameters to a custom class on initialization

user567 picture user567 · May 22, 2011 · Viewed 33k times · Source

I have a class Message with two attributes, name and message, and another class MessageController with two text fields, nameField and messageField. I want to make an instance of Message in MessageController, passing these two attributes as arguments.

Right now, I am doing this:

 Message *messageIns = [[Message alloc] init];
 messageIns.name = nameField;
 messageIns.message = MessageField; 

How can I pass the values at the creation of an instance? I tried to redefine init in Message.m, but I don't know how do that.

-(id)init{
    if((self=[super init])){

    }
    return self;
}

Please help.

Answer

Giuliano Galea picture Giuliano Galea · May 22, 2011

You have to create a custom initializer.

-(id)initWithName:(NSString *)name_ message:(NSString *)message_ 
{
     self = [super init];
     if (self) {
         self.name = name_;
         self.message = message_;
     }
     return self;
}

of course this assumes your parameters are of NSString type and that you have your properties set correctly ;)