有人可以解释以下代码段中myString
和anotherString
之间的Objective-C差异:
// In .h file
@interface MyClass : NSObject {
NSString* myString;
}
@end
// In .m file
@interface MyClass ()
NSString* anotherString;
@end
@implementation MyClass
//...
@end
谢谢!
答案 0 :(得分:4)
在.h文件中,声明一个实例变量。每个对象都有不同的对象。
在实现文件中,您声明一个全局变量(它在一个类别中的事实不会改变任何东西)。
因此,无论对象的实例如何,该变量的值都是相同的。
请注意,这通常用于模拟类变量,但使用static
关键字,因此该变量仅可从实现文件中获取。
答案 1 :(得分:2)
在.m文件中,@interface MyClass()
实际上是一个类别,而不是正确的接口声明。区别在于类别不可以添加实例变量,只有方法。