我是一名实习生,并且正在学习Objective-C以开发IOS应用程序。他们已经有一个现有的代码库,但是部分代码给我带来了问题。
由于以前的开发人员不在公司了,并且因为没人对Objective-C有所了解,所以没人能回答我有关应用程序构建方式的一些问题,因此我无法确定是否是我不知道的。不明白,或者这只是不好的做法。
这些是这些问题:
1°)在某些课程中,我发现了这样的代码:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated] }
这段代码没用吧?
2°)在项目中像9/10的方法一样,它们返回(无效)。这是Obj-C中的常见用法吗(因为所有内容都是指针)?
3°)有时在头文件和消息文件中都有接口声明。我猜这是因为您只想在标头中声明一部分以用于将来的include,并希望拥有一个“私有”部分。但是在文件中,我找到以下代码:
在标题中:
@interface WebViewController : UIViewController
@properties ...
@end
在Msg文件中:
#import ...
@interface WebViewController ()
@end
@implementation WebViewController ...
在msg文件中第二次声明一个void接口有什么意义?
4°)此外,在另一个类中,该接口也被第二次声明,但是定义了一个方法(在msg文件中)。有什么意义,因为该方法在下面定义,并且没有在头文件中声明?
先感谢您
欢迎使用Objective-C :)
不必要。超类可能在其自己的方法实现中定义了特定的行为,如果您不调用它,则会导致问题。覆盖方法意味着默认情况下不会调用父类自己的方法。从注释中添加:当然,如果您不重写它,则可以很好地调用超类定义。有两个常见原因导致您会发现它被覆盖:它在Xcode模板中,因此它一直在那里并且未被删除b。它曾经有其他内容,但是已被删除,并且留下了方法调用。
是。尽管没有在方法中显式返回void,但是您确实需要指定一些返回类型。如果您不返回任何内容,那么void是正确的值。它通常在obj-c类中找到,因为该方法可以通过使内部ivar或属性发生变异来响应被调用,而不需要返回。或者,结果可能是发送通知,因此不需要返回值。越来越多地使用基于块的完成处理程序代替显式的值返回,作为对方法内容进行响应的一种方式。
是的,它是要提供一个您不想公开的私有接口。在私有接口中什么也没有的情况下,可能是因为Xcode附带了模板代码而没有人删除它。您可以忽略或删除。
对于您提到的一种方法,虽然不需要在接口中声明私有方法,但从编写可读代码的角度来看,这是有意义的(在obj-c中得到了强烈认可的概念)。由于编译器将删除任何不必要的代码,因此对其进行声明没有任何区别,并且使您以后读取代码和理解类的任务变得很容易,当您或其他人稍后返回该代码时。这也是将文档放在注释中的好地方,因为它会将所有文档组合在一起。
希望能有所帮助。请查阅Apple的Objective-C编程指南,以获取更多最佳实践提示。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句