Objective c 目标C:与#x2B;和-在接球手和二传手?

Objective c 目标C:与#x2B;和-在接球手和二传手?,objective-c,setter,getter,Objective C,Setter,Getter,使用以下各项的区别是什么: + (id) myMethod; // Rather than - (id) myMethod; 最上面的是类方法(不需要实例) 第二个是实例变量(附加到特定实例) 这个答案很好地解释了这些方法: 使用+将方法声明为类方法,或者可以直接在类上调用的方法,其中类是对象。所以当你有了这个: @implementation Foo +(NSString*)method1 { return @"Foo"; } -(NSString*)method2 { retu

使用以下各项的区别是什么:

+ (id) myMethod;

// Rather than
- (id) myMethod;

最上面的是类方法(不需要实例) 第二个是实例变量(附加到特定实例)

这个答案很好地解释了这些方法:


使用
+
将方法声明为类方法,或者可以直接在类上调用的方法,其中类是对象。所以当你有了这个:

@implementation Foo
+(NSString*)method1 {
  return @"Foo";
}
-(NSString*)method2 {
  return @"Foo";
}
@end
这些方法以不同的方式调用:

[Foo method1];  //=> @"Foo"
Foo* f=[[Foo alloc] init];
[f method2];    //=> @"Foo"

另一件需要注意的事情是类方法不能访问实例,这意味着它们不能访问任何类型的实例变量

@Linuxios概括了类和实例方法的概念。然而,由于您在标题中提到了getter和setter,我想指出,在Objective-C中,您可以使用属性,而不是编写自己的访问器方法。比如说,

在头文件中,您将有如下内容:

@interface MyObject : NSObject
@property (nonatomic,retain) NSSet* mySet;
@end
@implement MyObject
@synthesize mySet;
@end
myObject.mySet; // assuming myObject is an instance of the MyObject class
在m文件中,您将有如下内容:

@interface MyObject : NSObject
@property (nonatomic,retain) NSSet* mySet;
@end
@implement MyObject
@synthesize mySet;
@end
myObject.mySet; // assuming myObject is an instance of the MyObject class
要访问另一个类中的集合,可以按如下方式进行:

@interface MyObject : NSObject
@property (nonatomic,retain) NSSet* mySet;
@end
@implement MyObject
@synthesize mySet;
@end
myObject.mySet; // assuming myObject is an instance of the MyObject class

…因此,类方法不是getter。它们只是类方法。另外,如果这两个方法返回不同的值,您的示例会更清晰。可能重复