我有一个类 X
和几个类 X1,X2,X3,X4
是 X
我有一个带有类名称的 NSArray
,我正在使用它进行迭代:
_classnames = @[@"X1",@"X2",@"X3",@"X4"];
然后:
- (UITableViewCell *)tableViewUITableView *)tableView
cellForRowAtIndexPathNSIndexPath *)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/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) | Powered by Discuz! X3.4 |