改变Alamofire函数调用的属性值

本文探讨了使用Alamofire发送GET请求时遇到的变量修改问题。作者尝试在一个测试类中通过调用Alamofire的request方法并传入自定义URL执行GET请求,在回调函数中修改实例变量i的值,期望输出为22,但实际结果为12。文章详细描述了代码实现过程及预期与实际结果的对比,引发读者对异步请求中变量作用域及修改时机的思考。

最近我开始Alamofire。 我想用Alamofire发送一个简单的GET请求:

<span style="color:#393318"><code><span style="color:#101094">import</span> <span style="color:#2b91af">Alamofire</span>

<span style="color:#101094">class</span> <span style="color:#2b91af">Test</span><span style="color:#303336">{</span>
    <span style="color:#101094">var</span><span style="color:#303336"> url</span><span style="color:#303336">:</span><span style="color:#2b91af">String</span> <span style="color:#303336">=</span> <span style="color:#7d2727">"www.github.com"</span>
    <span style="color:#101094">var</span><span style="color:#303336"> i</span><span style="color:#303336">:</span> <span style="color:#2b91af">Int</span> <span style="color:#303336">=</span> <span style="color:#7d2727">1</span>

    <span style="color:#101094">func</span><span style="color:#303336"> change</span><span style="color:#303336">(){</span>
        <span style="color:#2b91af">Alamofire</span><span style="color:#303336">.</span><span style="color:#303336">request</span><span style="color:#303336">(</span><span style="color:#303336">url</span><span style="color:#303336">,</span><span style="color:#303336"> method</span><span style="color:#303336">:.</span><span style="color:#101094">get</span><span style="color:#303336">).</span><span style="color:#303336">responseString </span><span style="color:#303336">{</span><span style="color:#303336"> response </span><span style="color:#101094">in</span>
            <span style="color:#101094">self</span><span style="color:#303336">.</span><span style="color:#303336">i </span><span style="color:#303336">+=</span> <span style="color:#7d2727">1</span><span style="color:#303336">
            print</span><span style="color:#303336">(</span><span style="color:#101094">self</span><span style="color:#303336">.</span><span style="color:#303336">i</span><span style="color:#303336">)</span>
        <span style="color:#303336">}</span><span style="color:#303336">
        print</span><span style="color:#303336">(</span><span style="color:#303336">i</span><span style="color:#303336">)</span>
    <span style="color:#303336">}</span>
<span style="color:#303336">}</span></code></span>

我想改变属性iAlamofire类测试从1到2的函数调用。 控制台和打印结果,看看会发生什么。 我期望的输出

2 - 2

但真正的输出

1 2

! ! 我对这个结果感到很困惑。 为什么它不是2 22 11 2吗? 在函数调用期间到底发生了什么? 为什么不能改变吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值