1

以此类推,在 Eclipse IDE 和许多其他 IDE 中,当我声明类的一些私有属性时,我可以自动生成 getter 和 setter 方法。例如,使用大约 20 个属性进行声明非常有用,我终于创建了所有方法。

我们是否在 xCode IDE 中获得了相同的功能,我的意思是......当我在“.h”中编码一些声明方法时,我可以在“.m”中自动声明......

例如:

在“.h”中,代码​​如下:

- (NSString *)loadMessageLabelFr:(id)sender;

在“.m”中,使用菜单功能生成的代码“desired”:

- (NSString *)loadMessageLabelFr:(id)sender{

}
4

3 回答 3

3

Getter 和 setter 由编译器为您的类属性隐式生成。例如拥有

@property int count;

隐含地为您提供以下内容:

1) 一个名为 的 ivar _count,它存储属性的值。

2)一个getter和一个setter

- (int)count
{
    return _count;
}

- (void)setCount:(int)count
{
    _count = count;
}

此代码是在编译时插入的,因此您不会在 .m 文件中看到它。这很好,因为这样你的代码就不会被琐碎的 getter 和 setter 弄得一团糟。如果您希望您的 getter 或 setter 执行其他操作而不仅仅是设置或返回值,则需要以通常的方式定义该方法,例如:

- (void)setCount:(int)count
{
    NSLog(@"Count set to %d", count);
    _count = count;
}
于 2013-04-12T16:55:49.297 回答
1

我知道你的意思——很多时候,在我的头文件中声明了 10 个方法之后,我希望它们以某种方式转移到我的实现文件中。

然而...

这不是Java,对象和文件组织完全不同

  1. 您不必定义该方法,它仍然是一个有效的用例。有些类没有特定的方法定义并处理方法调用doesNotRecognizeSelector:

  2. 您可以在运行时添加方法定义

  3. 您可以从多个实现文件中的一个标头定义方法。

由于这些原因(以及许多其他原因),在实现文件中生成方法头可能弊大于利。

最简单的 Xcode 解决方案是

  1. 将方法标头从 复制粘贴.h.m.
  2. 使用自动完成,写标题的开头,例如- (BOOL)可以让你更快地自动完成。
于 2013-04-12T17:51:03.900 回答
0

你如何定义你的实例变量?

您的问题(例如变量)的答案是“不,但您真的需要它们吗”......使用属性和访问器方法是在编译期间为您创建的。在实践中,您需要显式实现很少的访问器方法。

对于公共方法,答案是否定的,但是,您可以复制方法定义,然后只需添加括号,这样就不会做很多工作(您甚至不需要删除分号)。

此外,这适用于变量和公开定义的方法,开始输入:

- a

并且 Xcode 将使用适当的方法名称为您提供该行的自动完成。

于 2013-04-12T16:17:04.540 回答