【问题标题】:This Objective-C method is supposed to return an IBAction. Why is there no return statement?这个 Objective-C 方法应该返回一个 IBAction。为什么没有return语句?
【发布时间】:2012-10-04 17:04:38
【问题描述】:

我正在学习 Objective-C 和 iOS 开发。我想我掌握了方法语法。 Method Syntax in Objective C

如果我理解正确,这个名为 reset 的实例方法应该返回一个 IBAction 对象。但它似乎只是在设置实例变量(它们是具有这些名称的 UI 文本字段)。为什么它没有返回 IBAction 对象的 return 语句?

- (IBAction)reset {               //why does it not have a return statement?
    fahrenheit.text = @"32";
    celsius.text = @"0";
    kelvin.text = @"-273.15";
}

我习惯了看起来像这样的 .NET 代码(将其放入非 NET 人员的伪代码中):

public function reset () returns IBAction
        me.fahrenheit.text = "32";
        me.celsius.text = "0"
        me.kelvin.text = "-273.15"
        return new IBAction    //I would expect something like this in obj C, based on my experience with .NET languages
end function

【问题讨论】:

  • 作为参考,-(ClassType)method 几乎从未发生过。值传递仅适用于基元和结构,IIRC;对于类,您必须通过指针传递它们(并返回它们)。甚至您的对象变量也是指针。 (嗯,处理,但仍然。)
  • 这意味着如果你看到-(SomeType)methodSomeType 可能不是一个类。

标签: ios


【解决方案1】:

IBAction 是 typedef 无效的。 Xcode 使用它作为提示,该方法可用于接口构建器中的“连接”。

【讨论】:

  • @ctrahey--所以我可以将此方法解释为“返回 void”/即不返回对象(或对对象的引用,对于目标 C)。因为该方法返回 void,编译器不期望它返回引用,因此不允许返回语句。明白了吗?
  • 完美,是的!可以有return;,但没有返回声明也是完全合法的。
  • @akh2103 顺便说一句,您可以在UINibDeclarations.h 中看到IBAction#define(不是typedef)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 1970-01-01
  • 2015-03-14
  • 2015-08-26
  • 1970-01-01
  • 2023-01-24
相关资源
最近更新 更多