iOS创建实例并在应用程序的许多类中使用的最佳方式

时间:2014-03-01 10:48:10

标签: ios objective-c object

在我的应用程序中,我创建了一个类MC_ApiUtility,它包含我在应用程序中使用的方法。基本上,它将包含通过Web服务器访问API的方法。我也有一些模特。

我更喜欢使用MC_ApiUtility&的单个实例。通过应用程序访问某些模型。我的意思是,我创建一次实例,使用它,更新它,在其他类中我也可以使用相同的更新对象实例。

在iOS中实现此目标的最佳方式是什么?

3 个答案:

答案 0 :(得分:1)

听起来好像你正在寻找一个单身类。这是一个线程安全模式:

<强>接口

@interface MYSingeltonClass : NSObject

+ (MYSingeltonClass *) sharedManager;

- (void) doSomething;

@end

<强> Implmentation

@implementation MYSingeltonClass

+ (MYSingeltonClass *) sharedManager
{
    static MYSingeltonClass * sharedManager = nil;

    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedManager = [[MYSingeltonClass alloc] init];
    });

    return sharedManager;
}

- (id)init
{
    self = [super init];
    if (self) {
    }

    return self;
}

- (void) doSomething
{
}    
@end

答案 1 :(得分:0)

1)使用Singleton设计模式 您将通过[MyClass sharedInstance]

在任何地方使用1个对象

2)创建一个“帮助者”:只有类方法的类+(... )...而不是 - (... ).... 你将不会有任何对象,只有无限的方法(如果你需要属性,不要使用它)

答案 2 :(得分:0)

好吧,如果我理解你的问题......

我长时间使用这个模型(original):

  1. 您需要创建一个通用数据容器类AppDataObject。这是一个数据容器对象的祖先类,您实际上可以用它来保存应用程序的全局变量。

  2. 在初始时,您需要将代码添加到创建空数据容器对象的应用程序委托中。

  3. 之后,您需要创建一个简单的简单协议AppDelegateProtocol。此协议仅列出一种方法-theAppDataObject.该方法允许您向应用程序委托询问其数据对象。

  4. 并创建AppDataObject的子类,该子类实际上包含真实应用的数据。您可以在此处放置要在对象之间共享的信息。

  5. 使用protocol表示应用中对象需要包含的唯一内容是AppDelegateProtocol以及应用数据对象子类的标头。您没有#include应用委托的标题,这样可以很好地将应用中的不同对象分开。

    您可以下载projectViewControllerDataSharing,它使用上述方法在视图控制器之间共享信息。该项目使用导航控制器,并具有根视图控制器和第二个视图控制器。每个视图控制器都有一个UITextView和一个滑块。该应用程序使用AppDataObject在视图控制器之间传递这些字段的值。

    此方法由DuncanC - iphonedevsdk论坛描述。这种方法确实为我节省了很多时间。