.h文件中的变量,而不是Objective-C中的.m文件

时间:2013-12-26 14:17:53

标签: ios objective-c class

我对IOS编程很陌生,前几天就来了这个:

说你有一个TestVC.h文件:

@interface TestVC : UIViewController 
@property (strong, nonatomic) IBOutlet UIProgressView *progress;
@end

并在TestVC.m文件中(在顶部):

@interface TestVC ()
@property (strong, nonatomic) NSArray *levels;
@end

当您使用.h-file中的变量时,您会说self.progress

如果您使用.m文件中的变量,则为_levels

有什么区别?

2 个答案:

答案 0 :(得分:1)

  

当你使用.h文件中的变量时,你会说self.progress

     

如果您使用.m文件中的变量,则为_levels

没有区别。 self.progress_progress以及self.levels_levels功能齐全。

但是,_语法的 tiny 位更快,self.语法是正确的方法,除非在少数情况下不这样做。有时使用_会导致使用self.解决的严重问题。有时self.会导致问题。

基本上_正在直接访问原始内存地址,self.正在使用objective-c语言“正确”访问它。

在* .m与* .h中声明变量之间的区别在于* .m中的变量是隐藏的,因此源代码中的任何其他内容都不会看到它存在。它就在那里,但你会得到一个编译器警告它不存在。当它编译时它会起作用,因为它确实存在。

基本上在* .m中声明变量是一种说法“这件事在这里,但我不希望这个文件以外的任何东西都使用它”。它纯粹是装饰性的,对应用程序的运行方式没有影响。

作为一名新的Obj-C程序员,您应该始终使用self.levels。每当您使用_levels查看示例代码时,我都会将其更改为self.levels。如果您遇到问题...请在此处查看您是否找到了应该使用_levels的案例。

答案 1 :(得分:0)

无论是在.h还是.m文件中声明它们,它们都可以以任一格式使用。

最佳做法是使用getter / setter“self”。除了init和dealloc方法之外,格式无处不在,其中“_”直接访问方法通常被认为是更好的选择。