我正在关注Apple为iOS新手提供的三个教程。前两个似乎非常密切地遵循指南,从我收集到的,适合Objective-C的最新增强和推荐的编码习惯,但第三个似乎没有。
不确定链接是否有效:https://developer.apple.com/library/ios/documentation/General/Conceptual/iCloud101
它明确告诉您为所有声明的属性调用@synthesize。只要您不关心自定义支持变量的名称,这不是不必要的吗?
它告诉您进行方法的前向声明。这仍然是编译器所需要的吗?何时不需要前瞻声明?
它经常使用直接访问的实例变量而不是使用属性。属性不是数据存储的首选方法吗?何时最好避免使用财产?我猜他们这样做是为了创建私有变量,也许。本教程中没有使用匿名类别,因此可能在编写教程后可以使用这些类别。
我认为还有更多。我想确保我不会错过这里的工具带的一些潜在技术,以避免现代Objective-C中可能存在的坏习惯。最后的细则显示它在2013年4月更新,但也许他们没有费心更新所有代码风格。
答案 0 :(得分:2)
@synthesize
属性答案 1 :(得分:2)
他们可能只是没有更新代码风格。此外,Apple样本代码的风格通常非常多样化。关于具体问题:
现在这通常是不必要的 - 但在某些情况下,例如,当一个类符合协议中声明的属性时。
在同一个文件中,可以看到已实现但未在其他地方声明的方法。通常,只有在必须从类外部调用方法时才需要声明头中的方法。
我认为使用实例变量可能是一个品味问题。在dealloc
和初始化程序中,通常建议在属性实现中出现副作用时直接使用ivars。