我在声明我的字典是这样的:

@property (weak, nonatomic) NSMutableDictionary *testVariableValues;
@synthesize testVariableValues = _testVariableValues;


然后,我像这样填充字典:

- (IBAction)testPressed:(UIButton *)sender {

    self.testVariableValues = [NSMutableDictionary dictionary];

    if ([sender.currentTitle isEqualToString:@"Test 1"])
    {
        [self.testVariableValues setObject:[NSNumber numberWithDouble:5.2] forKey:@"x"];
        [self.testVariableValues setObject:[NSNumber numberWithInt:-1] forKey:@"y"];
        [self.testVariableValues setObject:[NSNumber numberWithInt:1] forKey:@"a"];
    } else if ([sender.currentTitle isEqualToString:@"Test 2"]) {
    // Continues like this


每次我填充字典时,都会将字典的内容打印到命令行,因此我知道该部分正在工作,如果我尝试从另一种方法访问字典,似乎会出现问题,如下所示:

if ([self.display.text isEqualToString:@"x"]) {
    NSLog(@"%f", [[self.testVariableValues objectForKey:@"x"] doubleValue]);
    [self.brain pushOperand:[[self.testVariableValues objectForKey:@"x"] doubleValue]];


此代码块中的NSLog返回null,这使我认为无法从testPressed方法外部访问字典。有人能够对此有所启示吗?我对字典的实现是否全部错误?

谢谢!

最佳答案

您的字典应该是一个强属性,因为如果您使它变弱,则在testPressed方法执行结束时该字典将被释放
你应该改变

@property (weak, nonatomic) ...


@property (strong, nonatomic) ...

关于objective-c - 词典范围?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11375053/

10-10 21:30