2012-06-30 24 views
0

我想使用單例存儲將在多個視圖控制器中使用的變量。我需要能夠獲取變量並設置它們。如何在單例中調用一個方法來更改存儲在單例中的變量。嘗試使用方法更改單身中的變量

total+=1079; 
[var setTotal:total]; 

其中var是

static Singleton *var = nil; 

我需要更新的總髮送到單內setTotal方法。但是當我這樣做時,setTotal方法永遠不會被訪問。 get方法工作,但setTotal方法不工作。請讓我知道該怎麼做。下面是我的一些源代碼

// 
// Singleton.m 
// Rolo 
// 
// Created by on 6/28/12. 
// Copyright (c) 2012 Johnny Cox. All rights reserved. 
// 

#import "Singleton.h" 

@implementation Singleton 
@synthesize total,tax,final; 

#pragma mark Singleton Methods 

+ (Singleton *)sharedManager 
{ 
    static Singleton *sharedInstance = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     sharedInstance = [[Singleton alloc] init]; 
     // Do any other initialisation stuff here 
    }); 
    return sharedInstance; 
} 

+(void) setTotal:(double) tot 
{ 
    Singleton *shared = [Singleton sharedManager]; 
    shared.total = tot; 
    NSLog(@"hello"); 
} 
+(double) getTotal 
{ 
    Singleton *shared = [Singleton sharedManager]; 
    NSLog(@"%f",shared.total); 
    return shared.total; 
} 
+(double) getTax 
{ 
    Singleton *shared = [Singleton sharedManager]; 
    NSLog(@"%f",shared.tax); 
    return shared.tax; 
} 
@end 


// 
// Singleton.h 
// Rolo 
// 
// Created by on 6/28/12. 
// Copyright (c) 2012 Johnny Cox. All rights reserved. 
// 

#import <Foundation/Foundation.h> 

@interface Singleton : NSObject 
@property (nonatomic, assign) double total; 
@property (nonatomic, assign) double tax; 
@property (nonatomic, assign) double final; 

+ (id)sharedManager; 
+(double) getTotal; 
+(void) setTotal; 
+(double) getTax; 

@end 

回答

1

您試圖實現你的getter和setter爲類方法而不是實例方法。屬性是你的單例的屬性,而不是它的類。欲瞭解更多有關實例方法VS類方法的Objective-C看到herehere

你有更好的運氣有更多的東西一樣:

-(double) getTotal; 
-(void) setTotal:(double) total; 
-(double) getTax; 
+0

謝謝你,固定我的問題。 –

相關問題