我想在Objective-C中爲計算器類做類方法(我不想實例方法和變量),但我遇到了問題。我有以下h文件:類方法錯誤,目標C
#import <Foundation/Foundation.h>
@interface Calc : NSObject
{
NSNumber* accumulator;
}
//Acumulator Methods
+ (void) setAccumulator: (NSNumber *) value;
+ (void) clear;
+ (NSNumber *) accumulator;
//Arithmatic metods
+ (void) add: (NSNumber *) value;
+ (void) subtract: (NSNumber *) value;
+ (void) multiply: (NSNumber *) value;
+ (void) divide: (NSNumber *) value;
+ (void) setCurrentOperation: (NSString *) o;
+ (NSString *) currentOperation;
然後,當我嘗試定義的.m文件的任一方法,收到了錯誤:「實例變量類方法‘X’訪問」。在我的.m文件,此錯誤存在的方法的一個例子:
+ (void) setAccumulator: (NSNumber *) value
{
accumulator = value;
}
可能有人或許可以解釋爲什麼這個錯誤發生以及幫助我解決這個問題?謝謝!
你正在聲明'accumulator'作爲一個實例變量,這意味着它不能從類方法訪問。相反,您應該在.m文件中將其創建爲靜態變量。看到這個問題的信息如何做到這一點:http://stackoverflow.com/questions/1063229/objective-c-static-class-level-variables – smileyborg
這是一個糟糕的設計選擇。你爲什麼要製作所有這些方法的類方法?它們都應該是實例方法。 – rmaddy
我知道你說過你不想使用實例方法,但是使用實例方法/變量,然後創建一個(可能是全局的)Calc實例會是更好的方法。 –