iOS Development--interview & Interview Summary (iii.)
Last Update:2015-10-08
Source: Internet
Author: User
<span id="Label3"></p><p style="text-align: center;"><p style="text-align: center;"><span style="font-size: 18pt;">On setter and Getter methods for different attribute policies</span></p></p><p><p></p></p><p><p>If synthesize is omitted, and we implement the setter and Getter methods ourselves, the system does not generate the corresponding setter and Getter methods, as well as the instance variables</p></p><p><p>1, when the semantic attribute is declared as <span style="color: #ff6600;">assign</span> , the setter and getter are implemented inside the method</p></p><pre><pre><span style="color: #008080;">1</span> -(<span style="color: #0000ff;">void</span>) setName: (nsstring *<span style="color: #000000;">) name{</span><span style="color: #008080;">2</span> _name =<span style="color: #000000;"> name;</span> <span style="color: #008080;">3</span> <span style="color: #000000;">}</span><span style="color: #008080;">4</span> -(nsstring *<span style="color: #000000;">) name{</span><span style="color: #008080;">5</span><span style="color: #0000ff;">return</span> <span style="color: #000000;"> _name;</span> <span style="color: #008080;">6</span> }</pre></pre><p><p> <br> 2, When the semantic attribute is declared as <span style="color: #ff6600;">retain </span>, Setter and getter method internal implementation </p> </p><pre><pre> <span style="color: #008080;">1 </span>-(<span style="color: #0000ff;">void </span>) setName: (nsstring *<span style="color: #000000;">) name{</span> <span style="color: #008080;">2 </span> <span style="color: #0000ff;">if </span> (_name!=<span style="color: #000000;"> name {</span> <span style="color: #008080;">3 </span> <span style="color: #000000;">[_name release]; </span> <span style="color: #008080;">4 </span> _name =<span style="color: #000000;"> [name retain]; </span> <span style="color: #008080;">5 </span> <span style="color: #000000;" } < span> <span style="color: #008080;">6 </span> <span style="color: #000000;"> "</span> <span style=" color: #008080; ">7 </span>-(nsstring *<span style=" Color: #000000; ">) name{</span> <span style="color: #008080;">8 </span> <span style="color: #0000ff;">return </span> <span style=" Color: #000000; "> [[_name retain] autorelease]; </span> <span style="color: #008080;">9 </span>} </span></pre></pre><p><p> <br> 3, When the semantic attribute is declared as <span style="color: #ff6600;">copy </span>, Setter and getter method internal implementation </p> </p><pre><pre><span style="color: #008080;">1</span> -(<span style="color: #0000ff;">void</span>) setName: (nsstring *<span style="color: #000000;">) name{</span><span style="color: #008080;">2</span><span style="color: #0000ff;">if</span> (_name! =<span style="color: #000000;"> Name) {</span><span style="color: #008080;">3 </span> <span style="color: #000000;">[_name release];</span> <span style="color: #008080;">4</span> _name =<span style="color: #000000;"> [name copy];</span> <span style="color: #008080;">5</span> <span style="color: #000000;">}</span><span style="color: #008080;">6</span><span style="color: #000000;">}</span><span style="color: #008080;">7</span> -(nsstring *<span style="color: #000000;">) name{</span><span style="color: #008080;">8</span><span style="color: #0000ff;">return</span> <span style="color: #000000;"> [[_name retain] autorelease];</span> <span style="color: #008080;">9</span> }</pre></pre><p><p></p></p> <p><p> iOS Development-interview & interview Summary (c) </p> </p></span>