对自定义对象进行类型转换 - 数据丢失了吗?

时间:2014-06-01 04:01:28

标签: parameters casting base-class

我创建了一个带有NSInteger属性的自定义UIButton对象,我为此指定了枚举值以进行标识。我正在使用.tag属性来创建一个自定义类。

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

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

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

修改

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

1 个答案:

答案 0 :(得分:5)

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