问题
我正在创建一个自定义UIView,我需要UIButton的多个实例。我希望通过创建每个按钮的一个实例来保存内存(和代码!),然后使用标签来识别哪个按钮是哪个。我可以创建新的“向上”和“向下”按钮,但我想知道我是否可以更聪明地做到这一点。
我设置它的方式是3( 适用于任何数字,但是)UILabels,每个按钮下方或上方分别有一个“向上”和“向下”按钮。我还使用每个按钮的CGPoint位置计数,以匹配相应的UILabel。
我在做什么
所以我正在做的是将xCount设置为默认值,创建第一个标签,然后在将标签和按钮添加为子视图之前创建第一个“向上”和“向下”按钮。
接下来,我增加xCount,更改标签并为每个标签和两个按钮设置框架。但是,这会将第一个按钮移动到新帧(如预期的那样)。
我尝试了什么:
我尝试在每次使用后将每个按钮设置为自身的副本(在第一个标签和按钮添加到子视图之后),但这会在运行时出错。
button = [button copy];
这更像是一个代码格式问题,而不是一个问题,但我正在寻找一些更明智的洞察问题:)。
此项目正在使用自动引用计数,如果这会改变任何内容。
提前致谢!
答案 0 :(得分:3)
首先,你对记忆的担忧是没有根据的。只需创建所需的按钮数量即可。
其次,如果更改按钮(或任何视图)的框架,则会移动。你不能在两个地方有一个按钮。
第三,复制对象使用的内存量与从头开始创建两个相同;必须为副本分配新的内存。
第四,UIButton
s不conform to NSCopying
,因此您无法复制它们。
第五,你对记忆的担忧是没有根据的。只需创建所需的按钮数量即可。