【问题标题】:iPhone method declaration with two parameters带有两个参数的 iPhone 方法声明
【发布时间】:2011-07-09 02:27:46
【问题描述】:

我对客观 C 语言相当陌生,并且在声明一个采用两个参数的方法时遇到了麻烦。在我的 .h 文件中,我有以下内容:

-(void)refreshTime:(NSTimeInterval *) absoluteTimeRemainSeconds, (NSDate *) targetDate;

在我的 .m 文件中,我有以下内容:

-(void) refreshTime:(NSTimeInterval *) absoluteTimeRemainInSeconds, (NSDate *) targetDate {

我希望方法二接受两个参数,一个 NSTimeInterval 和一个 NSDate,但是我现在拥有它的方式是它不起作用。谁能看到我的错误?非常感谢您的帮助。

【问题讨论】:

    标签: iphone objective-c function methods parameters


    【解决方案1】:

    这将是这样做的好方法

    -(void)refreshTime:(NSTimeInterval *) absoluteTimeRemainSeconds targetDate:(NSDate *) targetDate;

    和:

    -(void)refreshTime:(NSTimeInterval *) absoluteTimeRemainSeconds targetDate:(NSDate *) targetDate{}

    如果不想命名参数,则无需命名,但必须在两个参数之间留出空格,而不是冒号。

    干杯

    【讨论】:

      【解决方案2】:

      有几处是错误的:首先,参数之间没有逗号,其次,参数名称(和类型)位于您正在执行的操作的冒号之后。使用您的代码的示例:

      -(void) refreshTime:(NSTimeInterval*)absoluteTimeRemainSeconds usingTargetDate:(NSDate*)targetDate;
      

      【讨论】:

      • 谢谢!那么这是调用该方法的正确方法吗? [self refreshTime: absoluteTimeRemainInSeconds :targetDate];
      • @cruzzin 不,[self refreshTime:absoluteTimeRemainInSeconds usingTargetDate:targetDate];
      【解决方案3】:
      -(void)refreshTime:(NSTimeInterval *)absoluteTimeRemainSeconds withDate:(NSDate *)targetDate;
      

      就是这样。 Obj-C 使用命名参数,只需在每个参数后放置一个空格并遵循相同的语法。冒号表示参数类型和名称的开始。实际上,您甚至不必使用名称,

      -(void)refreshTime:(NSTimeInterval *)absoluteTimeRemainSeconds :(NSDate *)targetDate;
      

      但它使名称更容易阅读。

      【讨论】:

      • 绝对不要像第二个例子那样做。如果你不给你的参数命名,任何使用你代码的人都会诅咒你的名字。这就像拒绝使用换行符,只是在语句之​​间粘贴分号,没有空格——单调,不利于可读性,而且没有实际好处。
      猜你喜欢
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      • 2013-08-22
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 2016-12-13
      • 1970-01-01
      相关资源
      最近更新 更多