gpt4 book ai didi

swift - 在 Interface Builder 中使用 Singleton 和 Swift

转载 作者:行者123 更新时间:2023-11-28 08:35:57 26 4
gpt4 key购买 nike

在 Objective-C 中,这适用于 Singleton in Interface Builder

static Universe *instance;

+ (Universe *)instance {
return instance;
}

+ (id)hiddenAlloc {
return [super alloc];
}

+ (id)alloc {
return [self instance];
}

+ (void)initialize {
static BOOL initialized = NO;
if (!initialized) {
initialized = YES;
instance = [[Universe hiddenAlloc] init];
}
}

并且由于 alloc 的覆盖,IB 将选择 Universe 的唯一实例

这在 Swift 中可能吗? [我一直坚持我的解决方案,即 here on Github .]

最佳答案

这是一个开始(我认为)。 Objective-C 中的父类(super class)。

请查看 Github ...感谢任何帮助!

Singleton.h(必须在桥接头文件中)

#import <Foundation/Foundation.h>

@interface Singleton : NSObject

+ (Singleton *)instance;

@end

单例.m

#import "Singleton.h"

@implementation Singleton

static Singleton *instance;

+ (Singleton *)instance {
return instance;
}

+ (id)hiddenAlloc {
return [super alloc];
}

+ (id)alloc {
return [self instance];
}

+ (void)initialize {
static BOOL initialized = NO;
if (!initialized) {
initialized = YES;
instance = [[self hiddenAlloc] init];
}
}

@end

Universe.swift

import UIKit

// MARK: - convenience access
let universe = Universe.sharedInstance

@objc(Universe)
class Universe : Singleton {

static let sharedInstance = Universe()

override class func instance() -> Singleton {
return sharedInstance
}
}

Universe 对象总是显示相同的散列(和内存地址),但它没有保留其 IBOutlet 变量...所以这仍然是 100%坏了,但这是一个开始(可能)。

关于swift - 在 Interface Builder 中使用 Singleton 和 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37711521/

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