WEB开发网
开发学院手机开发iPhone 开发 iPhone Dev 如何在不同类间传递数据 阅读

iPhone Dev 如何在不同类间传递数据

 2010-02-23 19:30:00 来源:WEB开发网   
核心提示:今天想在两个UIViewController之间共享一个object,最早以前用得办法是先在一个controller里创建对象,iPhone Dev 如何在不同类间传递数据,然后其他 controller通过UITabViewController的view array找到之前的那个controller. 类似于:NSA

今天想在两个UIViewController之间共享一个object,最早以前用得办法是先在一个controller里创建对象,然后其他 controller通过UITabViewController的view array找到之前的那个controller. 类似于:

NSArray *array = [tab viewControllers];

objectNeeded = [[[array objectAtIndex:0] objecNeededt] retain];

这个办法显然不好。今天google一下,主要有两种更好地解决方案。

把需要共享的object放在AppDelegate类里面。比如需要在两个class里传递一个string:

在YourAppDelegate里创建一个UILabel的instance

在class 1里面:

YourAppDelegate *mainDelegate = (YourAppDelegate *)[[UIApplication sharedApplication]delegate];

mainDelegate.mystring = Label1.text;

在class 2里面:

YourAppDelegate *mainDelegate = (YourAppDelegate *)[[UIApplication sharedApplication]delegate];

label2.text = mainDelegate.mystring;

但是不知道为什么YourAppDelegate *mainDelegate = (YourAppDelegate *)[[UIApplication sharedApplication]delegate];这句话在我的xcode里面不能通过编译。不过这个方法很多人是不推荐的。

创建一个singleton class,代码如下:

// MyCommon.h:

@interface MyCommon

class MyCommon : NSObject

{

int user;

};

@property(assign) int user;

+ (MyCommon *)singleton;

@end

// MyCommon.m:

@implementation MyCommon

static MyCommon * MyCommon_Singleton = nil;

+ (MyCommon *)singleton

{

if (nil == MyCommon_Singleton)

{

MyCommon_Singleton = [[MyCommon_Singleton alloc] init];

}

return MyCommon_Singleton;

}

@end

在需要用的地方只要

int user = [MyCommon singleton].user;

Tags:iPhone Dev 如何

编辑录入:coldstar [复制链接] [打 印]
赞助商链接