在Objective C中,您现在可以使用@property和@synthesize自动生成get和set方法。我的问题是:我还需要在界面中声明属性吗?没有它,我的程序编译并运行正常。但大多数书籍和其他例子仍然有它。为什么呢?
@interface Person : NSObject {
// do i need the declaration "NSString name;"? why?
// i have notice that my program works fine without it.
// but many programming examples still incude it.
// NSString name;
}
@property NSString *name;
@end
@implementation Person
@synthesize name;
@end
答案 0 :(得分:3)
这取决于运行时间。现代运行时在iOS中使用,您不必声明ivars。但在OS X中并非总是如此。见这里 - http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtVersionsPlatforms.html
答案 1 :(得分:1)
你所说的是伊娃。您不需要声明它,因为@synthesize
会为您添加它。这并不适用于较旧的编译器(显然在@propertiy
添加到语言之前),因此很多人和书籍仍在使用。
PS:如果你没有任何ivars,你也不需要{...}
,例如:
@interface Person : NSObject
@property NSString *name;
//...
答案 2 :(得分:0)
你不需要;将为您生成ivar。但是调试器不会显示自动生成的ivars,所以我还是要声明它们。
答案 3 :(得分:0)
您无需申报ivar。如果省略ivar,@synthesize
指令会为您完成。