2012-06-30 2 views
0

Я пытаюсь использовать singleton для хранения переменных, которые будут использоваться в нескольких контроллерах представлений. Мне нужно получить переменные, а также установить их. Как вызвать метод в одноэлементном режиме, чтобы изменить переменные, хранящиеся в синглетоне.Попытка изменить переменные в одноэлементном режиме с помощью метода

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

где вар является

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

Вы попытались реализовать свои методы получения и сеттер, как методы класса вместо методов экземпляра. Атрибуты - это свойства вашего синглтона, а не его класса. Более подробную информацию о методах экземпляра против методов класса в Objective-C см here или here

Вам повезет больше с чем-то более, как:

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

Спасибо, что фиксированная моя проблема. –

Смежные вопросы