Iphone 在Objective-C中,有没有一种方法可以综合类变量的setter/getter?

Iphone 在Objective-C中,有没有一种方法可以综合类变量的setter/getter?,iphone,objective-c,class,Iphone,Objective C,Class,我发现自己声明了一堆类变量,为每个变量编写简单的get/set方法真的很累。因此,问题是如何在objective-c中合成类变量的setter/getter?您能不能不只是在编辑器宏或其他什么东西中?在接口之后,标题中会出现类似的内容: @property (retain) NSString* caption; 然后在实现内部立即执行此操作: @synthesize caption; 查看本教程了解更多详细信息:属性不需要引用ivar。如果确实需要,可以让动态属性返回静态变量 只需使用@dy

我发现自己声明了一堆类变量,为每个变量编写简单的get/set方法真的很累。因此,问题是如何在objective-c中合成类变量的setter/getter?

您能不能不只是在编辑器宏或其他什么东西中?

在接口之后,标题中会出现类似的内容:

@property (retain) NSString* caption;
然后在实现内部立即执行此操作:

@synthesize caption;

查看本教程了解更多详细信息:

属性不需要引用ivar。如果确实需要,可以让动态属性返回静态变量


只需使用@dynamic并实现getter和setter来引用实现文件中的静态变量。

通常,当您对一组要全局访问的相关变量进行分组时,您会创建所谓的单例:

这意味着您有一个类级方法返回一个共享实例-因此您将有如下调用:

[MyClass sharedInstance].myProperty
由于要存储的值是真正的类实例变量,因此可以使用普通属性,但所有类都将使用相同的共享数据

请注意,有些人不喜欢使用单例,您可能需要阅读有关该做法的一些注意事项:


但是,由于在iPhone开发中,您已经从一个固有的单例(任何人都可以随时访问的应用程序委托)开始,如果您非常小心,那么轻松地使用该技术并没有什么坏处。请注意,与创建Singleton类不同,另一种方法是让应用程序委托创建变量存储类的单个实例,并让每个人都通过委托访问该实例…

您还应注意,这假设一个名为ivar的标题,其类型为NSString*,即即时变量,但是其他类型(比如静态)呢?@Dennis:不,你不能在类上使用属性,只能在对象实例上使用属性。对于类变量,必须手动实现getter和setter类方法。不能解决问题(类级别的属性,即“+”),这实际上也适用于类级别的静态变量。您不需要在头文件中将它们定义为实例变量,只需在@implementation mark static NSString*标题之前将以下内容添加到实现(.m)文件中即可;你说的“类变量”是什么意思?Objective-C没有这样的结构。有实例变量、局部变量、全局变量和静态变量,但没有类变量。除了需要一个实例来调用属性,而不是只使用类名。。。