gpt4 book ai didi

objective-c - 在没有新初始化的情况下使用类中的数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:20:33 26 4
gpt4 key购买 nike

我有一个 TabBar 布局,在主页选项卡中我有一个按钮“连接”,当按下该按钮时,它会向类 TransferViewController 发送一个 Action 以创建一个 GameKit session 。然后我有另一个名为 Send 的选项卡,它有一个按钮,上面写着“发送文件”,当按下该按钮时,它会向 TransferViewController 类发送一个 Action ,它也使用使用连接设置的“Session”变量来发送文件,但因为它是不同的选项卡,它创建了 Controller 的一个新实例,它希望我再次连接,但按钮位于“主页”选项卡上。

无论如何,我可以在没有两个实例的情况下为两个选项卡使用一个 Controller 吗?我希望用户单击“主页”选项卡上的“连接”,然后切换到“发送”选项卡并按“发送文件”并使用另一个选项卡上的“连接”设置的变量。如果这令人困惑,我很抱歉。

最佳答案

这一点都不令人困惑 - 事实上,它一直都在出现。这在模型- View - Controller 系统中的工作方式是您设置一个模型类,使其成为单例,然后在需要共享数据的所有 Controller 中添加对该单例的引用。

模型.h

@interface Model : NSObject
@property (nonatomic, readwrite) Session *session;
-(id)init;
+(Model*)instance;
@end

模型.m

@implementation Model
@synthesize isMultiplayer;

-(id)init {
if(self=[super init]) {
self.session = ...; // Get the session
}
return self;
}

+(Model*)instance {
static dispatch_once_t once;
static Model *sharedInstance;
dispatch_once(&once, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
@end

现在您可以在您的 Controller 代码中使用共享 session :导入"Model.h",然后编写

[[Model instance].session connect];
[[Model instance].session sendAction:myAction];

关于objective-c - 在没有新初始化的情况下使用类中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11944891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com