Objective c 如何在iphone应用程序中使用singleton?
大家好,我是iphone开发的新手 我的应用程序中有5个主题 我有每个主题的静态图像(标签,按钮和所有),但我不知道如何应用或改变整个应用程序的新主题。我通读了singleton,但不明白如何使用它来更改整个应用程序的图像 是否有其他方法将主题应用到应用程序中,或者单例是唯一的方法,如果是,那么我如何使用它 编辑:这是我的singleton类代码,但我找不到任何方法来实现各种主题的图像Objective c 如何在iphone应用程序中使用singleton?,objective-c,ios4,singleton,themes,ios-4.2,Objective C,Ios4,Singleton,Themes,Ios 4.2,大家好,我是iphone开发的新手 我的应用程序中有5个主题 我有每个主题的静态图像(标签,按钮和所有),但我不知道如何应用或改变整个应用程序的新主题。我通读了singleton,但不明白如何使用它来更改整个应用程序的图像 是否有其他方法将主题应用到应用程序中,或者单例是唯一的方法,如果是,那么我如何使用它 编辑:这是我的singleton类代码,但我找不到任何方法来实现各种主题的图像 #import "MyClass.h" @implementation MyClass + (MyC
#import "MyClass.h"
@implementation MyClass
+ (MyClass *)sharedInstance
{
static MyClass *instance;
@synchronized(self)
{
if(!instance)
{
instance = [[MyClass alloc] init];
}
}
return instance;
}
您应该查看iOS5中的UIAppearance代理。对于早期版本的singleton方法,您可以请求对singleton进行外观更改,从而更改其各种图像,然后发送通知(NSNotification),通知希望相应更新其接口的任何相关方。或者,您可以在singleton属性上设置键值观察者(KVO),以便在其中一个属性更改时自动通知它们
演示如何实现单例。这只是一种从任何地方访问同一类实例的方法。是一个链接,指向关于单例设计模式的讨论以及一个更为复杂的“纯”单例实现。如果您想更改图像,请单击以下代码。否则,如果要动态更改它们,请使用带有NSTimer委托方法的“动作中的代码”方法
Drag and drop some images in bundle and pass their names to array.
singleton .h file
#import <Foundation/Foundation.h>
@interface SingleTon : NSObject
{
}
+(SingleTon *) createSingleTon;
-(NSString *) returnImage:(NSString *) imageIs;
@end
singleton .m file
@implementation SingleTon
+(SingleTon *) createSingleTon
{
static SingleTon *single= nil;
if (single == nil) {
single = [[SingleTon alloc] init];
}
return single;
}
-(NSString *) returnImage:(NSString *) imageIs
{
return imageIs;
}
@end
viewcontroller .h file
#import <UIKit/UIKit.h>
#import "SingleTon.h"
@interface ViewController : UIViewController<UITextFieldDelegate>
{
SingleTon *sing;
IBOutlet UIImageView *displayImage;
// connect this outlet imageview in xib.
NSArray *imagesArray;
int i;
}
-(IBAction)changeImage:(id)sender;
@end
拖放捆绑中的一些图像,并将它们的名称传递给数组。
singleton.h文件
#进口
@接口单例:NSObject
{
}
+(SingleTon*)创建SingleTon;
-(NSString*)returnImage:(NSString*)imageIs;
@结束
singleton.m文件
@实现单例
+(单例*)创建单例
{
静态单态*single=nil;
如果(单个==零){
single=[[SingleTon alloc]init];
}
返回单;
}
-(NSString*)returnImage:(NSString*)imageIs
{
返回图像;
}
@结束
viewcontroller.h文件
#进口
#导入“SingleTon.h”
@界面ViewController:UIViewController
{
独生子女*唱歌;
IBUIImageView*显示图像;
//在xib中连接此插座图像视图。
NSArray*图像sarray;
int i;
}
-(iAction)changeImage:(id)发送方;
@结束
viewcontroller.m文件
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
imagesArray = [[NSArray alloc] initWithObjects:@"images.jpg",@"images1.jpg",@"images2.jpg",@"images4.jpg", nil];
i = 0;
sing = [SingleTon createSingleTon];
// Do any additional setup after loading the view, typically from a nib.
}
-(IBAction)changeImage:(id)sender
{
if (i<[imagesArray count]) {
displayImage.image = [UIImage imageNamed:[sing returnImage:[imagesArray objectAtIndex:i]]];
}
i++;
}
#导入“ViewController.h”
@界面视图控制器()
@结束
@实现视图控制器
-(无效)viewDidLoad
{
[超级视图下载];
imagesArray=[[NSArray alloc]initWithObjects:@“images.jpg”,“images1.jpg”,“images2.jpg”,“images4.jpg”,nil];
i=0;
sing=[SingleTon createSingleTon];
//加载视图后,通常从nib执行任何其他设置。
}
-(iAction)changeImage:(id)发件人
{
如果(我能你建议我怎么做吗???我不知道任何意义上的singleton…:(好的,但是我应该在哪里创建一个类?我是说你提供的链接,我需要创建另一个.h和.m文件还是我必须将它们粘贴到我的视图控制器中???请建议!!!你不需要创建新的.h和.m文件,你只需要添加一个类方法(标记为+而不是-,在类上而不是在类的实例上调用),返回在.m文件中声明的静态实例(如果为nil,则在实例化之后)。