gpt4 book ai didi

cocoa - 如何在 Cocoa 中将控件绑定(bind)到单例?

转载 作者:行者123 更新时间:2023-12-03 16:15:10 32 4
gpt4 key购买 nike

我的 FTP 应用程序中有一个单例,旨在存储该应用程序可以处理的所有类型的服务器,例如 FTP 或 Amazon S3。这些类型是位于应用程序包中的插件。它们的路径由 applicationWillFinishLoading: 定位,并发送到单例内的 addServerType: 方法,以加载并存储在 NSMutableDictionary 中。

我的问题是这样的:
如何将 NSDictionaryController 绑定(bind)到单例实例内的字典?可以在IB中完成,还是必须在代码中完成?我需要能够在 NSPopupButton 中显示字典的键,以便用户可以选择服务器类型。

提前致谢!
球体猫1

最佳答案

我找到/弥补了这个问题的答案:我只是重写了 init 方法,这样当从 XIB 文件调用它时,它仍然返回单例。然后,我提供一个名为 realInit 的方法来在第一次调用 init 时进行实际初始化。

代码:

-(id)init
{
@synchronized(self)
{
if (_sharedInstance == nil)
{
_sharedInstance = [[VayprServerTypes alloc] realInit];
}
}
[self release];

return _sharedInstance;
}

-(id)realInit
{
if (self = [super init])
{
serverTypesArray = [[NSMutableArray alloc] init];
}

return self;
}

编辑:当然,您需要在类实现的顶部将 _sharedInstance 定义为静态变量:

static ClassTypeGoesHere *_sharedInstance;

还编辑:既然您现在确定您的 init 方法将至少被调用一次,您可以继续用以下内容替换正常的单例共享实例方法:

+(ClassTypeGoesHere *)sharedInstance
{
return _sharedInstance;
}

如果有人发现此设计有任何明显问题,请告诉我!球体猫1

关于cocoa - 如何在 Cocoa 中将控件绑定(bind)到单例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2891721/

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