0
有幾個問題看起來與此類似(例如Objective C Static Class Level variables)並且我讀過,但我仍感到困惑。值得注意的是,各種答案似乎與對initialize
的呼叫有所不同。Objective-C:運行時的類變量?
我有一個類Foo
。在運行時,我的應用程序詢問後端以找出Foo
應該使用什麼「類參數」(即這些參數將在Foo
的所有實例中共享)。我知道如何處理後端等,但我不知道我的Objective-C方法是否正確。我應該說:它確實有效。但是,我不知道我在做什麼。
編輯:我認爲它的工作。但不時,我得到一個奇怪的例外: libsystem_platform.dylib _os_lock_recursive_abort
。
它發生在初始化時,我分配/初始化NSDictionary
。
Foo.h:
+ (NSDictionary *)parameters;
+ (void)setParameters:(NSDictionary *)params;
Foo.m:
static NSDictionary *parameters = nil;
@implementation Foo
+ (NSDictionary *)parameters{
return parameters;
}
+ (void)setParameters:(NSDictionary *)params
{
parameters = params;
}
+ (void)initialize
{
[super initialize];
if ((self == [Foo self]) && !parameters) // Is this right??
parameters = [[NSDictionary alloc] init];
}
@end
... somewhere else, in another class ...
[Foo setParameters:dictionaryOfParams];
謝謝Nuno。我只是添加了一條評論:我偶爾會遇到一個奇怪的例外。所以我猜想有些事情是不對的... – PJC 2014-09-19 15:12:39