开发者

Objective-C protocol vs inheritance vs extending?

开发者 https://www.devze.com 2023-01-02 10:14 出处:网络
I have a couple classes that have nearly identical code.Only a string or two is different between them.What I would like to do is to make them \"x\" from another class that defines those functions and

I have a couple classes that have nearly identical code. Only a string or two is different between them. What I would like to do is to make them "x" from another class that defines those functions and then uses constants or something else to define those strings that are different. I'm not sure if "x" is inheritance or extending or what. That is what I need help with.

For example:

objectA.m:

-(void)helloWorld {
    NSLog("Hello %@",child.name);
}

objectBob.m:

#define name @"Bob"

objectJoe.m

#define name @"Joe"

(I'm not sure if it's legal to define strings, but this gets the point across)

It would be ideal if objectBob.m and objectJoe.m didn't have to even define the methods, just their relationship to objectA.m. Is there any way to do something like this? It is kind of like p开发者_高级运维rotocol, except in reverse, I want the "protocol" to actually define the functions.


If all else fails I'll just make objectA.m:

-(void)helloWorld:(NSString *name) {
    NSLog("Hello %@",name);
}

And have the other files call that function (and just #import objectA.m).


Just create a -name method in your subclasses (you want one base class, then a subclass for each type).

Then do:

- (void)helloWorld {
    NSLog(@"hello %@", [self name]);
}

Edit: fixed non-objc like method naming. Edit again: fixed method.


Sounds like inheritance to me. Define the helloWorld method as NSLog(@"Hello %@", name) and have the subclasses give different values to their name instance variables. (Note that I'm talking about instance variables, not preprocessor macros, which are useless for this purpose.)

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号