在创建方法的开始时我何时使用+或 - ?

时间:2013-06-08 21:57:19

标签: objective-c

在撰写这些内容时,有人可以向我解释一下情况吗?

 - (id) startsWithMinus:(NSString *)title;

 + (id) startsWithPlus:(NSString *)title;

3 个答案:

答案 0 :(得分:4)

+开始意味着您要声明一个类方法。 从-开始意味着您正在声明实例方法。

如果您不熟悉这些术语,则应该看this question作为解释。

答案 1 :(得分:0)

+代表类方法,而-代表实例方法

答案 2 :(得分:0)

如此处所示,+表示类方法, - 表示实例方法。

可能与您的编程相关的重要区别是何时使用类与实例方法。类方法(+)只是您使用该类调用的方法。那么,就像[[DataAccess class] getInfoFromServer]那样。当您不需要访问属性但需要与该类相关的特定行为时,您可能希望使用类方法(例如,调用DataAccess类从服务器获取信息是有意义的。)

或者,当您想要分配和初始化对象然后使用其属性时,您可能希望使用实例方法。因此,例如,DataAccess * accessObject = [[DataAccess alloc] init]将为您提供DataAccess对象。该对象可能具有相关属性,这些属性将在.h文件或.m文件中的@interface中声明。

例如,与DataAccess类一起使用,在@implementation之前,您将在.m文件中声明这样的内容。

 @interface DataAccess()
 @property (strong, non-atomic) NSDictionary * data;

 @end

然后在任何给定的实例方法中,您可以假设该对象具有数据集。因此,您可以在实例方法中使用self.data之类的调用来获取数据,因为您假设调用该方法的对象已经设置了属性数据。如果使用类方法,则无法调用self.data,因为您没有使用该方法的特定实例。

或许过于简单,您可以将类方法视为与您不需要访问类的实例的特定属性的类相关的简单函数,而您可以将实例方法视为需要要调用它的类的实例,因为它需要与实例(类的已分配对象)关联的属性才能正常工作。