有人可以向我解释写这些时的情况和区别吗?
- (id) startsWithMinus:(NSString *)title;
或者
+ (id) startsWithPlus:(NSString *)title;
有人可以向我解释写这些时的情况和区别吗?
- (id) startsWithMinus:(NSString *)title;
或者
+ (id) startsWithPlus:(NSString *)title;
以开头+
表示您正在声明一个类方法。以开头-
表示您正在声明一个实例方法。
如果您不熟悉这些术语,那么您应该看到这个问题以获得解释。
正如这里所指出的,+ 表示类方法,- 表示实例方法。
可能与您的编程相关的重要区别是何时使用类与实例方法。类方法 (+) 只是您使用类调用的方法。因此,类似于 [[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,因为您没有使用该方法的特定实例。
简单地说,您可以将类方法视为与类相关的简单函数,您不需要访问类实例的特定属性,而您可以将实例方法视为需要class 来调用它,因为它需要与实例关联的属性(类的分配对象)才能正常工作。
+
代表类方法,而-
代表实例方法