1

我正在学习 Apple 为 iOS 新手提供的三个教程。前两个似乎非常严格地遵循指导方针,据我所知,这些指导符合 Objective-C 的最新增强和推荐的编码习惯,但第三个似乎不符合。

不确定链接是否有效:https ://developer.apple.com/library/ios/documentation/General/Conceptual/iCloud101

  1. 它明确告诉您为所有声明的属性调用@synthesize。只要您不关心自定义支持变量的名称,这不是不必要的吗?

  2. 它告诉您对方法进行前向声明。这仍然是编译器需要的吗?什么时候不需要前向声明?

  3. 它经常使用直接访问的实例变量而不是使用属性。属性不是数据存储的首选方法吗?什么时候最好避免使用属性?我猜他们这样做是为了创建私有变量,也许。本教程中没有使用匿名类别,因此可能在编写教程后这些类别才可用。

我认为还有更多。只是想确保我没有错过这里工具带的一些潜在技术,以试图避免现代 Objective-C 中可能存在的不良习惯。最后的细则显示它在 2013 年 4 月更新,但也许他们没有费心更新所有代码样式。

4

2 回答 2

2
  1. 您不再需要手动设置@synthesize属性
  2. 不再需要实现文件中的前向声明。
  3. 有些人喜欢 ivars,有些人喜欢属性,只要确保你始终如一地使用它们。
于 2013-09-05T03:26:46.633 回答
2

他们可能只是没有更新代码样式。此外,Apple 示例代码的风格通常非常多样化。关于具体问题:

  1. 这现在通常是不必要的 - 但在某些情况下,例如,当一个类符合协议中声明的属性时。

  2. 在同一个文件中,已实现但未在其他地方声明的方法是可见的。通常,仅当必须从类外部调用方法时,才需要在标头中声明方法。

  3. 我想使用实例变量可能是个人喜好问题。在dealloc和初始化程序中,通常建议直接使用 ivars 以防在属性实现中产生副作用。

于 2013-09-05T03:26:59.430 回答