关于C:什么时候在创建方法的开始使用A+或-呢?

When do I use a + or - at the beginning of creating a method?

本问题已经有最佳答案,请猛点这里访问。

有人能给我解释一下写这些东西时的情况和区别吗?

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

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


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

如果您不熟悉这些术语,那么您应该看到这个问题以获得解释。


正如这里所指出的,+表示一个类方法,-表示一个实例方法。

可能与编程相关的重要区别在于何时使用类与实例方法。类方法(+)只是使用类调用的方法。所以,沿着[[dataaccess class]getinfofromserver]这条线。如果不需要访问属性,但需要与类相关的特定行为(例如,调用DataAccess类从服务器获取信息是有意义的),则需要使用类方法。

或者,当您想要分配和初始化一个对象,然后使用它的属性时,您可能想要使用一个实例方法。例如,dataaccess*accessobject=[[dataaccess alloc]init]会给您一个dataaccess对象。该对象可能具有相关的属性,这些属性将在.h文件或.m文件中的@interface中声明。

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

1
2
3
4
 @interface DataAccess()
 @property (strong, non-atomic) NSDictionary * data;

 @end

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

简单地说,可以将类方法看作与类相关的简单函数,在类中不需要访问类实例的特定属性,而可以将实例方法看作需要类的实例来调用它,因为它需要与实例相关联的属性(一个已分配的对象t)正常工作。


+表示类方法,-表示实例方法