gpt4 book ai didi

ios - NSClassFromString 行为不当和缓存类

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

我有一个类 X 和几个类 X1,X2,X3,X4X 的后代

我有一个带有类名的 NSArray,我用它来迭代:

_classnames = @[@"X1",@"X2",@"X3",@"X4"];

然后:

- (UITableViewCell *)tableView:(UITableView *)tableView 
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString * identifier = @"cellId";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier
forIndexPath:indexPath];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:identifier];
}

X * xshared = [NSClassFromString(_classnames[indexPath.row]) shared];
cell.textLabel.text = [xshared title];
return cell;
}

编辑:有趣的是:

for (NSString * s in _classnames) {
NSLog(@"%@",NSClassFromString(s));
}

tableView 调用之外工作

但是所有 NSClassFromString 都返回类 X1

我错过了什么吗?

最佳答案

我发现了错误,我在这里发布只是为了完成。

X 类中,我将 shared 声明为

+ (instancetype)shared {
static id _shared = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_shared = [self new];
});

return _shared;
}

而且我没有在子类中实现 shared

向子类添加shared 解决了这个问题。它总是返回实例化的第一个类的原因很明显,但我没有看到。

关于ios - NSClassFromString 行为不当和缓存类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28302908/

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