如何在Objective-C中访问类外变量数据?
我有一个带有NSMutableDictionary变量的头文件和一个函数,如下所示如何在Objective-C中访问类外变量数据?,objective-c,Objective C,我有一个带有NSMutableDictionary变量的头文件和一个函数,如下所示 #import <Foundation/Foundation.h> @interface Client : NSObject{}; @property (assign)NSMutableDictionary *dict; - (NSMutableDictionary *)myDict; @end 我的问题是我必须在哪里初始化dict?这样我就可以使用Client.myDict之类的东西从项目中的任
#import <Foundation/Foundation.h>
@interface Client : NSObject{};
@property (assign)NSMutableDictionary *dict;
- (NSMutableDictionary *)myDict;
@end
我的问题是我必须在哪里初始化dict?这样我就可以使用Client.myDict之类的东西从项目中的任何地方访问它。(必须返回所有键值对)您正在定义一个方法,
myDict
来检索dict
属性的值。但是当编译器合成该属性时,它会自动合成一个dict
getter方法,因此不需要myDict
方法。你可以把它去掉
一般来说,你会这样做:
#import <Foundation/Foundation.h>
@interface Client : NSObject
@property (nonatomic, strong) NSMutableDictionary *dict;
@end
注意,不需要显式声明实例变量,因为编译器将为您合成一个实例变量(带前导下划线)。此外,也不需要编写“getter”方法,因为编译器也会为您合成该方法
如果您使用的是ARC(我希望您是),那么您应该将assign
替换为strong
,就像我上面所做的那样。但是,如果您没有使用ARC,您可以将其保留为retain
,但是您必须编写dealloc
方法(如果您使用ARC,则不要编写此方法):
然后可以像这样使用该类:
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]);
您正在定义一个方法,
myDict
来检索dict
属性的值。但是当编译器合成该属性时,它会自动合成一个dict
getter方法,因此不需要myDict
方法。你可以把它去掉
一般来说,你会这样做:
#import <Foundation/Foundation.h>
@interface Client : NSObject
@property (nonatomic, strong) NSMutableDictionary *dict;
@end
注意,不需要显式声明实例变量,因为编译器将为您合成一个实例变量(带前导下划线)。此外,也不需要编写“getter”方法,因为编译器也会为您合成该方法
如果您使用的是ARC(我希望您是),那么您应该将assign
替换为strong
,就像我上面所做的那样。但是,如果您没有使用ARC,您可以将其保留为retain
,但是您必须编写dealloc
方法(如果您使用ARC,则不要编写此方法):
然后可以像这样使用该类:
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]);
你弄坏了我的语法分析器。。这看起来不像objc,至少不是合法的objc。你弄坏了我的解析器。。这看起来不像objc,至少不是合法的objc。
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]);