2012-07-07 81 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;