iPhone Dev 如何在不同类间传递数据
2010-02-23 19:30:00 来源:WEB开发网今天想在两个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;
更多精彩
赞助商链接