Yes, you can, but... don't forget that in -computeVar3... self is not fully 
initialized. If you have all control on self it can be without problems, but 
Objective-C is an OO language. Consider this :

- Your class is ClassA with it's init method. 
- Then you have ClassB, subclass of ClassA. ClassB override -init cleanly (call 
super in the beginning etc.)
- Then ClassC, subclass of ClassB. ClassC override -computeVar3.
And then the problems can begin, in -[ClassC computeVar3] self is not fully 
initialize from the point of view of ClassA, but the initialization has not 
even began from the point of view of ClassB and ClassC. I think it's a break of 
encapsulation principle.

If you want to put the code outside -init only for code readability, just use a 
plain C function.

Frédéric

Le 12 janv. 2011 à 12:41, Luc Van Bogaert a écrit :

> Hi,
> 
> I have a question about how to design a initializer mehod. 
> 
> I have defined a class with three instance variables. Two of them are arrays 
> and their value can be initialized straightforward in the initializer method, 
> but the value of the third instance variable is the result of a complex 
> algorithm, based on the contents of the two arrays.
> 
> I would like to implement that algorithm in a seperate method, instead of 
> writing it directly in the initializer. Is that OK, and could I then message 
> "self" in the initializer like: 
> 
> - (id) init
> {
>       self = [super init];
>       if (self) {
>               var1 = ...;
>               var2 = ...;
>               var3 = [self computerVar3With:var1:var2];
>       }
>       return self;
> }
> 
> Or is it better to write the algorithm directly as part of the initializer?
> Thanks,
> 
> -- 
> Luc Van Bogaert
> luc.van.boga...@me.com        
> 
> _______________________________________________
> 
> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
> 
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> 
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/cocoa-dev/ftestuz%40bluewin.ch
> 
> This email sent to ftes...@bluewin.ch

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to