菜鸟教程小白 发表于 2022-12-13 09:09:30

ios - Xcode,ios,将变量名称设置为另一个变量的值?


                                            <p><p>我想将一个变量的名称设置为另一个变量的值有没有其他方法可以做到这一点,因为我不认为这是方法。</p>

<pre><code>NSString *myint = @&#34;a&#34;;

NSString *() = @&#34;something&#34;;

NSLog(@&#34;%@&#34;, a);
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><strong>不,你不能这样做。</strong>一旦你的代码被编译,你的变量就没有真正的名字——只有位置。您在调试器中看到的名称是由调试器用来将位置映射到名称的符号文件提供的。</p>

<p><strong>键值编码可能会有所帮助</strong>,具体取决于您真正想要完成的工作。使用 KVC,您可以使用键名来引用值,而不是访问变量,就像使用字典一样。例如,如果您有一个具有 <code>foo</code> 和 <code>bar</code> 属性的对象,则可以执行以下操作:</p>

<pre><code>NSString *key = @&#34;foo&#34;;
;
</code></pre>

<p>您甚至可以覆盖 <code>-setValue:forKey:</code> 以便它接受任何键并记住值(这正是字典所做的)。</p>

<p><strong>您可以使用 <a href="https://gcc.gnu.org/onlinedocs/cpp/Stringification.html" rel="noreferrer noopener nofollow">stringification operator</a> 进入另一个方向</strong>(将变量设置为另一个变量的名称) ,但它有点hacky,通常不是那么有用。简而言之,以 # 为前缀的宏参数用作文字字符串,而不是被评估。所以你会创建一个这样的宏:</p>

<pre><code>#define string(x) #x
</code></pre>

<p>然后你会在代码中的某个地方使用它,如下所示:</p>

<pre><code>int foo = 5;
NSLog(&#34;The name of the variable is %s and its value is %d.&#34;, string(foo), foo);
</code></pre>

<p>结果如下:</p>

<pre><code>The name of the variable is foo and its value is 5.
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - Xcode,ios,将变量名称设置为另一个变量的值?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/31600358/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/31600358/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - Xcode,ios,将变量名称设置为另一个变量的值?