gpt4 book ai didi

iphone - 使用字符串的值来确定类的实例

转载 作者:搜寻专家 更新时间:2023-10-30 19:55:59 25 4
gpt4 key购买 nike

我有一个类似于这个的 switch 语句:

    switch (number)
{
case 1:
if (imageView1.hidden == NO)
{
imageView1.hidden = YES;

} else
{
imageView1.hidden = NO;
}


break;
case 2:
if (imageView2.hidden == NO)
{
imageView2.hidden = YES;


} else
{
imageView2.hidden = NO;
}

break;

等等等等。

我的问题是如何使用值为“imageView1”的字符串并使用它来访问我的 imageView 类的实例,而不是为每个 imageView 实例设置不同的大小写?我知道它类似于从字符串或类似的东西创建 NSPath,但我只是不确定在哪里看或它会被称为什么。

在此先感谢您的帮助!

最佳答案

如果这实际上是代码,我不反对那些关心设计的人。但是,我会假设您只是发布问题的通用版本。因为这是 Objective-C 中的一个重要概念,所以我们应该谈谈它。

您可以使用键值编码和例程 -valueWithKey: 按名称访问对象的属性。

NSString *nameOfView = @"imageView1";
[[self valueForKey:nameOfView] setHidden:YES];

这将按顺序查找名为 -imageView1 的方法、名为 imageView1 的 ivar,最后是名为 _imageView1 的 ivar。这种技术在 Cocoa 中被大量使用,理解它很重要。这是我们仔细命名事物的众多原因之一,也是我们制作为我们处理内存管理的访问器的另一个原因。在文档中搜索“Key-Value Compliance”以获取更多信息。

现在对于这个特定案例,我倾向于使用 JimG 的解决方案,使用 View 的 NSArray,这样我就可以遍历它们并根据它们的索引打开或关闭我想要的那些。但我可以想象在很多情况下这样做是不合适的,而 KVC 可能是。

关于iphone - 使用字符串的值来确定类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/907885/

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