天天看點

簡化隻執行一次的寫法

<h4 id="toc_0">标準的寫法</h4>

<div class="codehilite"><pre><span class="err">空</span>

</pre></div>

<h4 id="toc_1">簡化後的宏</h4>

<div class="codehilite"><pre><span class="sr">/**************************************************************/</span>

<span class="sr">//</span> <span class="err">執行一次</span>

<span class="c1">#undef xy_once_begin</span>

<span class="c1">#define xy_once_begin( __name ) \</span>

<span class="n">static</span> <span class="n">dispatch_once_t</span> <span class="n">once_</span><span class="c1">##__name; \</span>

<span class="n">dispatch_once</span><span class="p">(</span> <span class="o">&</span><span class="n">once_</span><span class="c1">##__name , ^{</span>

<span class="c1">#undef xy_once_end</span>

<span class="c1">#define xy_once_end });</span>

<h4 id="toc_2">簡化後的寫法</h4>

<div class="codehilite"><pre><span class="o">-</span> <span class="p">(</span><span class="no">ibaction</span><span class="p">)</span><span class="ss">clickonce</span><span class="p">:(</span><span class="nb">id</span><span

class="p">)</span><span class="n">sender</span> <span class="p">{</span>

<span class="no">xy_once_begin</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>

<span class="no">showmbprogresshud</span><span class="p">(</span><span class="err">@</span><span class="s2">"only show once"</span><span class="p">,</span> <span class="kp">nil</span><span class="p">,</span>

<span class="kp">nil</span><span class="p">,</span> <span class="no">no</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>

<span class="no">xy_once_end</span>

<span class="p">}</span>