gpt4 book ai didi

ios - 无法从字符串创建我的 UIImageView 类

转载 作者:行者123 更新时间:2023-11-29 00:35:02 25 4
gpt4 key购买 nike

我正在创建 UIImageView 类的子类,例如 LittleImageViewRedImageView 等。

这些子类具有用于创建特定图像的便捷方法:

+ (UIImageView *)novo {
UIImageView *newImage = [[super alloc] initWithImage:...
// do stuff
return newImage;
}

当我尝试使用这个新的字符串命令创建此类类时

id newObject = [NSClassFromString(nameOfClass) novo];

我遇到了“无法识别的选择器发送到类”的崩溃。例如,显然 Objective-c 正在尝试执行 [UIImageView novo] 而不是执行 [RedImageView novo]

有什么解决办法吗?

最佳答案

我无法完全重现您的体验,但您应该考虑一些更改:(1) 将构造函数声明为返回派生类型,(2) 将局部变量声明为派生类型,(3) 使用要分配的派生类(self,不是 super)...

// in MyImageView.h
+ (instancetype)myImageView:(UIImage *)image;

// in MyImageView.m
+ (instancetype)myImageView:(UIImage *)image {
MyImageView *miv = [[self alloc] initWithImage:image];
// ...
return miv;
}

现在您可以在别处使用,而无需在局部变量声明中粗略地使用 id。它看起来像这样,在我的测试中,生成了正确类型的实例......

MyImageView *firstTry = [MyImageView myImageView:nil];
MyImageView *secondTry = [NSClassFromString(@"MyImageView") myImageView:nil];

NSLog(@"%@, %@", firstTry, secondTry);

关于ios - 无法从字符串创建我的 UIImageView 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40819035/

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