您正在定义一个方法,myDict
以检索dict
属性的值。但是当编译器合成那个属性时,它会自动合成一个dict
getter方法,所以不需要这个myDict
方法。你可以删除它。
通常你会做这样的事情:
#import <Foundation/Foundation.h>
@interface Client : NSObject
@property (nonatomic, strong) NSMutableDictionary *dict;
@end
请注意,该行没有大括号和分号@interface
。
并且,在回答您关于如何初始化属性(或者,从技术上讲,合成实例变量)的问题时,您可以在类的init
方法中执行此操作:
@implementation Client
- (id)init
{
self = [super init];
if (self) {
_dict = [[NSMutableDictionary alloc] init];
}
return self;
}
@end
请注意,不需要显式声明的实例变量,因为编译器会为您合成一个(带有前导下划线)。此外,也不需要编写“getter”方法,因为编译器也会为您合成它。
如果您使用的是 ARC(我希望您是),您可以将其替换assign
为strong
,就像我在上面所做的那样。但是,如果您不使用 ARC,则将其保留为retain
,但是您必须编写一个dealloc
方法(但如果您有 ARC,则不要编写此方法):
- (void)dealloc
{
[_dict release];
[super dealloc];
}
然后你可以像这样使用这个类:
Client *client = [[Client alloc] init];
[client.dict addObject:@"One"];
// you can access it this way
NSLog(@"client.dict = %@", client.dict);
// or this way
NSLog(@"[client dict] = %@", [client dict]);