【问题标题】:Does using parameters in methods change anything about the method's function?在方法中使用参数会改变方法的功能吗?
【发布时间】:2011-11-03 08:05:41
【问题描述】:

我已经尝试在谷歌和这个网站上搜索我的问题,但没有找到答案。

我是 Obj-C 的初学者,希望回答这个问题。

在我的方法中使用参数有什么好处。

例如..

 -(id)initWithName:(NSString *)newName atFrequency:(double)newFreq { 
self = [super init]; 
if (self != nil) {
name = newName; 
frequency = newFrequency;
} 
return self;
}

对比

 -(void)myMethod {
self = [super init];
if (self != nil) {
name = newName;
frequency = newFrequency;
}
return self;
}

我理解 -(void) 表示该方法没有返回类型,而 -(id) 表示第一个方法具有 'id' 作为返回类型,而 'id' 是通用的....

谁能帮忙解释一下?我希望我的问题有道理,谢谢大家的帮助。

【问题讨论】:

    标签: objective-c methods parameters return-type


    【解决方案1】:

    参数是方法的输入,就像任何语言中的函数/方法参数一样。在您的第二个示例中,在frequency = newFrequency; 行中,newFrequency 应该来自哪里?

    在其他语言中,您可能会有类似的东西

    void initWithName(string newName, double newFreq);
    

    在 Obj-C 中等价于

    @987654321@ (void)initWithName:(NSString *)newName atFrequency:(double)newFreq;

    不同之处在于,在 Obj-C 中,每个参数都有一个额外的方法名称(如atFrequency)——在这种情况下,方法名称是initWithName:atFrequency: ,而不仅仅是initWithName:

    (这实际上是可选的,您只需为每个参数设置一个:。从技术上讲,initWithName:: 仍然是一个有效的方法名称,但在 Obj-C 中这不是好的做法。)

    另见:

    【讨论】:

    • 嘿,感谢您的回复 jtbandes.. 但我想了解的是,使用参数有好处吗?难道我不能只写一个没有方法名中的参数的方法来做同样的事情吗?
    • @Instafal 你如何将任何输入传递给这样的方法?
    • 我想我只是想通了......当我在我的方法中使用参数时,它只会帮助解释我的方法在我阅读它时会做什么......而如果我不使用参数和我的方法返回无效,我必须采取额外的步骤并将方法发送给我的对象。使用参数并且当函数返回'id'时,我可以通过执行“MyClass *object = [[MyClass alloc]initWith:parameter1:parameter2]; 来保存我自己的步骤
    猜你喜欢
    • 1970-01-01
    • 2014-03-04
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    相关资源
    最近更新 更多