时间:2010-07-12 07:01:49

标签: objective-c

有人可以解释以下代码段中myStringanotherString之间的Objective-C差异:

   // In .h file
   @interface MyClass : NSObject {
 NSString* myString;
   }
   @end

   // In .m file
   @interface MyClass ()
   NSString* anotherString;
   @end

   @implementation MyClass
   //...
   @end

谢谢!

2 个答案:

答案 0 :(得分:4)

在.h文件中,声明一个实例变量。每个对象都有不同的对象。

在实现文件中,您声明一个全局变量(它在一个类别中的事实不会改变任何东西)。
因此,无论对象的实例如何,该变量的值都是相同的。

请注意,这通常用于模拟类变量,但使用static关键字,因此该变量仅可从实现文件中获取。

答案 1 :(得分:2)

在.m文件中,@interface MyClass()实际上是一个类别,而不是正确的接口声明。区别在于类别可以添加实例变量,只有方法。