3
グローバルスタティックを探し始めると、アプリケーション全体で使用する色を1か所に設定できます。私はここでシングルトンについての非常に良い回答(古い)を理解できませんでしたので、これを非常に簡単に処理するクラスを作成しました。いくつかの(他のスレッドの)いくつかに基づいて、私はアプリケーションデリゲートを避けることに決めました。シングルトンまたはセパレートクラス - 長所と短所
これを処理するにはいくつかの方法があるようです。低ios/objective-c開発者の経験では、以下の方法は何が欠けていますか? (それは仕方によって、動作し、簡単なようです。)
// Global.h
@interface Global : NSObject
@property (strong, nonatomic) UIColor *myColor;
- (id)initWithColor:(NSString *)color;
// Global.m
@implementation Global
@synthesize myColor;
- (id)initWithColor:(NSString *)color
{
if (!self) {
self = [super init];
}
if ([color isEqualToString:@"greenbackground"])
myColor = [[UIColor alloc] initWithRed:0.0/255 green:204.0/255 blue:51.0/204 alpha:1.0];
... and so on with other colors
return self;
}
@end
後に色を使用するには、次の
// Global.h
#import <foundation/Foundation.h>
@interface Global : NSObject {
UIColor *myGreen;
UIColor *myRed;
}
@property (nonatomic, retain) UIColor *myGreen;
@property (nonatomic, retain) UIColor *myRed;
+ (id)sharedGlobal;
@end
// Global.m
#import "Global.h"
static Global *sharedMyGlobal = nil;
@implementation Global
@synthesize myGreen;
@synthesize myRed;
#pragma mark Singleton Methods
+ (id)sharedGlobal {
@synchronized(self) {
if (sharedMyGlobal == nil)
sharedMyGlobal = [[self alloc] init];
}
return sharedMyGlobal;
}
- (id)init {
if (self = [super init]) {
myGreen = [[UIColor alloc] initWithRed:0.0/255 green:204.0/255 blue:51.0/204 alpha:1.0];
myRed = [[UIColor alloc] initWithRed:204.0/255 green:51.0/255 blue:51.0/204 alpha:1.0];
}
return self;
}
@end
と使用方法:
よりよい解決策をcell.backgroundColor = [[[Global alloc] initWithColor:@"greenbackground"] myColor];
編集を
cell.comboLabel.textColor = [[Global sharedGlobal] myGreen];
ありがとう:
これは非常にきれいに見えます。そのアイデアは私を過ぎ去った。私はシングルトンをもう一度見ます。 – David
あなたに助けが必要な場合は、私に知らせてください。 – giorashc
提供していただきありがとうございます。私は確かにできる。 [このページで](http://stackoverflow.com/questions/338734/iphone-proper-usage-of-application-delegate)MyCommonクラスのコードは、十分に使いやすく便利です。しかし、Xcodeは私が解決できないいくつかのエラーを投げます。ちなみに、私はGlobalという名前の単純なクラスのNSObjectを作成し、一致させるコードを変更(名前を変更)しました。コードを見たい場合は、ここに表示する方法をお勧めします。私はユーザーの代わりにカラーイーバールを使用することを考えています。 (?) – David