【问题标题】:Few Quick Questions About iOS Programming in Xcode关于 Xcode 中 iOS 编程的几个小问题
【发布时间】:2011-08-01 06:58:28
【问题描述】:

1) 对于接口 .h 文件,我应该导入类 (#import "Person.h") 还是应该使用 @class (@class Person)?而且我应该总是在 .m 中使用 import,对吧?

2) 如果我不使用自动旋转,我可以摆脱以下方法吗?

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

3) 在接口中声明变量时,是否需要将变量与属性分开?我看到两种方式都在完成。

编辑:

这些方法呢?

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
}

【问题讨论】:

    标签: iphone objective-c xcode


    【解决方案1】:
    1. @class 通常在你的头文件中就足够了。见this question
    2. 所有这些方法都在执行它们的默认行为,因此无论是否使用自动旋转,您都可以删除它们。如果您需要添加其他行为,您可能希望保留它们。 (使用super 意味着调用超类实现——即,如果您没有定义此方法将使用的实现。因此,如果您调用super 而没有做任何其他事情,没有意义。)
    3. 可以不使用它们,但我认为这只适用于 iOS 4 之后。请参阅 this question

    【讨论】:

    • @jtbandes:(3)我认为这从 Objective-C 2.0 开始有效,而不是从 iOS4.0 开始。 (例如,我在 iOS3.0 上使用过它)。对 Jon:如果有一个属性,你就不需要 iVar 声明,但如果你的对象需要存储一些数据但你不想要,那么最好使用没有属性的 iVar 和“@private”声明揭露它。我经常遇到的一个例子是 UITableViewController,它可能包含一个数组来填充它的行。
    • @SK9:好点。但是,您也可以选择不声明 ivar,而只需使用 @synthesize ivar = _ivar; 显式声明可在代码中使用的 ivar 名称。或者,更好的是,您可以使用类延续并在您的实现文件中将属性重新声明为非readonly
    • @jtbandes:当然!谷歌做了类似的事情——google-styleguide.googlecode.com/svn/trunk/objcguide.xml
    【解决方案2】:
    1. 您可以将@class 用于类型,但如果您的类子类化某些内容,则需要导入后者。对于协议也是如此。您可能需要导入该类,例如#import "Person.h",在实现文件的顶部。我可以提供一个很好的规则:如果编译器在此处阻塞,请导入!

    2. 是的。正如 jtbandes 指出的那样,调用会转到具有默认实现的 super

    3. 如果 iVar 声明有属性,则不需要它们,我不需要,因为我不想弄乱我的界面。我认为这从 Objective-C 2.0 开始有效,而不是从 iOS4.0 开始。 (例如,我在 iOS3.0 上使用过它)。此外,省略 iVar 有助于防止僵尸并保持正确的保留计数 - 它鼓励您使用正确的设置器。但有时如果您的对象需要存储一些数据但您不想公开它,那么使用没有属性和“@private”声明的 iVar 会很好。我经常遇到的一个例子是 UITableViewController,它可能包含一个数组来填充它的行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-12
      • 2011-08-24
      • 2013-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多