使用有什么区别:
+ (id) myMethod;
// Rather than
- (id) myMethod;
答案 0 :(得分:1)
使用+
将方法声明为类方法,或者可以直接在类上调用的方法,其中类是对象。所以当你有这个:
@implementation Foo
+(NSString*)method1 {
return @"Foo";
}
-(NSString*)method2 {
return @"Foo";
}
@end
以不同方式调用方法:
[Foo method1]; //=> @"Foo"
Foo* f=[[Foo alloc] init];
[f method2]; //=> @"Foo"
另外需要注意的是,类方法无法访问实例,这意味着它们无法访问任何类型的实例变量。
答案 1 :(得分:1)
在头文件中,您将得到以下内容:
@interface MyObject : NSObject
@property (nonatomic,retain) NSSet* mySet;
@end
在m文件中,你会有这样的东西:
@implement MyObject
@synthesize mySet;
@end
要访问另一个类中的集合,您可以这样做:
myObject.mySet; // assuming myObject is an instance of the MyObject class
答案 2 :(得分:0)
最上面一个是类方法(不需要实例) 第二个是实例变量(附加到特定实例)。
这个答案很好地解释了这些方法:
[MyObject myMethod]; // did not have to create an instance
MyObject* myNewObject = [[MyObject alloc] init] autorelease];
[myNewObject myMethod]; // had to create an instance