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。它们只是类方法。另外,如果这两个方法返回不同的值,您的示例会更清晰。可能重复