2

问题

我正在创建一个自定义 UIView,我需要一个 UIButton 的多个实例。我希望通过为每个按钮创建一个实例来节省内存(和代码!),然后使用标签来识别哪个按钮是哪个。我可以创建新的“向上”和“向下”按钮,但我想看看我是否可以更聪明地做到这一点。

我设置它的方式是 3(应该适用于任何数字,但是)UILabels,每个按钮下方或上方分别有一个“向上”和“向下”按钮。我还对每个按钮的 CGPoint 位置进行计数,以匹配相应的 UILabel。

我在做什么

所以我正在做的是将 xCount 设置为默认值,创建第一个标签,然后在添加标签和按钮作为子视图之前创建第一个“向上”和“向下”按钮。

接下来我增加 xCount,更改标签并为每个标签和两个按钮设置框架。但是,这会将第一个按钮移动到新框架(如预期的那样)。

我试过的:

我尝试在每次使用后将每个按钮设置为自身的副本(在将第一个标签和按钮添加到子视图之后),但这会在运行时产生错误。

button = [button copy];

这更多是代码格式问题,而不是问题,但我正在寻找对问题的更明智的见解:)。

这个项目正在使用自动引用计数,如果这改变了任何东西。

提前致谢!

4

1 回答 1

3

首先,你对记忆的担忧是没有根据的。只需创建您需要的按钮数量。

其次,如果您更改按钮(或任何视图)的框架,那么它会移动。你不能在两个地方都有一个按钮。

第三,复制一个对象与从头开始创建两个对象使用的内存量相同;必须为副本分配新内存。

第四,UIButtons不符合NSCopying,所以不能照搬。

第五,你对记忆的担忧是没有根据的。只需创建您需要的按钮数量。

于 2012-06-06T03:01:20.720 回答