尝试使用方法更改单例中的变量

时间:2012-06-30 01:58:37

标签: ios5 singleton

我正在尝试使用单例来存储将在多个视图控制器中使用的变量。我需要能够获取变量并设置它们。如何在单例中调用方法来更改存储在单例中的变量。

 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 个答案:

答案 0 :(得分:1)

您尝试将getter和setter实现为类方法而不是实例方法。属性是单例的属性,而不是其类的属性。有关objective-c中的实例方法与类方法的更多信息,请参阅herehere

你会更喜欢更喜欢的东西:

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