2012-07-07 82 views
0

我宣布我的字典里是这样的:字典范围?

@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方法之外访问字典。有人能够阐明这一点吗?我的字典实现是否全错?

谢谢!

回答

4

你的字典应该是一个强大的特性,因为如果你把它较弱,ditionary将由时间testPressed方法释放结束执行

你应该改变

@property (weak, nonatomic) ... 

@property (strong, nonatomic) ... 
+0

啊太棒了!太容易了,谢谢! – samturner 2012-07-07 12:52:52

2

声明你字典属性,具有很强的属性:

@property (strong, nonatomic) NSMutableDictionary *testVariableValues;