Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Objective-C中访问类外变量数据?_Objective C - Fatal编程技术网

如何在Objective-C中访问类外变量数据?

如何在Objective-C中访问类外变量数据?,objective-c,Objective C,我有一个带有NSMutableDictionary变量的头文件和一个函数,如下所示 #import <Foundation/Foundation.h> @interface Client : NSObject{}; @property (assign)NSMutableDictionary *dict; - (NSMutableDictionary *)myDict; @end 我的问题是我必须在哪里初始化dict?这样我就可以使用Client.myDict之类的东西从项目中的任

我有一个带有NSMutableDictionary变量的头文件和一个函数,如下所示

#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]);