菜鸟教程小白 发表于 2022-12-13 14:01:21

objective-c - 同一个 UIButton 的多个实例?


                                            <p><p><strong>问题</strong></p>

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

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

<p><strong>我在做什么</strong></p>

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

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

<p><strong>我的尝试:</strong></p>

<p>我尝试在每次使用后将每个按钮设置为自身的副本(在将第一个标签和按钮添加到 subview 之后),但这会在运行时出错。</p>

<pre><code>button = ;
</code></pre>

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

<p>这个项目正在使用自动引用计数,如果这有什么改变的话。</p>

<p>提前致谢!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>首先,您对内存的担忧是没有根据的。只需创建所需数量的按钮即可。</p>

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

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

<p>第四,<code>UIButton</code>不要<a href="http://developer.apple.com/library/ios/#documentation/General/Conceptual/DevPedia-CocoaCore/ObjectCopying.html" rel="noreferrer noopener nofollow">conform to <code>NSCopying</code></a> ,所以你不能复制它们。</p>

<p>第五,你对内存的担忧是没有根据的。只需创建所需数量的按钮即可。</p></p>
                                   
                                                <p style="font-size: 20px;">关于objective-c - 同一个 UIButton 的多个实例?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/10907496/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/10907496/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: objective-c - 同一个 UIButton 的多个实例?