【问题标题】:typecasting to custom object - is data lost?类型转换为自定义对象 - 数据是否丢失?
【发布时间】:2014-07-21 12:21:42
【问题描述】:

我创建了一个具有 NSInteger 属性的自定义 UIButton 对象,我为其分配了一个枚举值以用于识别。我将 .tag 属性用于其他用途,所以我创建了一个自定义类。

我必须将我的自定义类传递给一个接受 UIButton 作为参数并返回 UIButton 的函数。我只需键入以下内容即可对按钮进行类型转换:

self.clockInButton = (PACustomButton *)[self changeButtonImage:(PACustomButton *)self.clockInButton withImage:@"white_square_small"];

当我从方法中取回按钮时,我会丢失我的自定义 buttonName 属性吗?它会符合 UIButton 还是会保留自定义属性?

编辑

仅供参考,我不是在寻找任何问题的解决方案。我只是要求提供信息。作为一种解决方案(在我的情况下),我可以简单地编写一个新函数来做同样的事情,但它是为自定义按钮而不是基本 UIButton 设计的。但是,如果您想提供替代解决方案,我们欢迎他们。我只是想确保我的原始问题得到解答

【问题讨论】:

  • changeButtonImage: 做什么?
  • 更改按钮的背景图像。对于所有控制状态。这是我写的自定义方法

标签: parameters casting base-class


【解决方案1】:

您可以将您的对象投射到任何您想要的位置。这不会改变对象的真实类型。我可以将我的 UIButton 子类分配给常规 UIButton 引用,这不会将我的子类按钮变成其他东西。这里要记住的关键是指针和对象之间的区别。仅仅因为指针是 X 类型并不意味着它指向的对象是 X 类型。

【讨论】:

  • 很好的答案。我最初来自经典 C,所以这对我来说实际上意味着什么。 +1 用于指出对象和指针之间的区别
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-11
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
  • 2014-01-09
相关资源
最近更新 更多