<span id="Label3"></p><p><p>The singleton design pattern is one of several design patterns in iOS development, and each project must have a single case. Let me tell you the singleton pattern in the form of text and Code.</p></p><p><p>1. We simply create a singleton class</p></p><p class="p1"><p class="p1"><span class="s1">#import <span class="s2"><Foundation/Foundation.h></span></span></p></p><p class="p1"><p class="p1"><span class="s3">@interface<span class="s2"> singlonetest: <span class="s4">nsobject</span> </span> </span> <span class="s2"> </span></p></p><p class="p3"><p class="p3"><span class="s2">+ (<span class="s3">ID<span class="s2">) shareinstance;</span> </span> </span> <span class="s2"><span style="line-height: 1.5;"> </span></span></p></p><p class="p5"><p class="p5"><span class="s2">@end</span></p></p><p class="p1"><p class="p1"><span class="s1">#import <span class="s2">"SingloneTest.h"</span> </span> <span class="s2"> </span></p></p><p class="p3"><p class="p3"><span class="s2">@implementation<span class="s3"> singlonetest</span></span></p></p><p class="p4"><p class="p4"><span class="s2">+ (<span class="s4">ID<span class="s2">) shareinstance</span> </span></span></p></p><p class="p4"><p class="p4"><span class="s2">{</span></p></p><p class="p4"><p class="p4"><span class="s2"> <span class="s4">static<span class="s2"> <span class="s4">ID<span class="s2"> shareinstance;</span> </span> </span> </span> </span> <span class="s2"> </span></p></p><p class="p4"><p class="p4"><span class="s2"><span class="s4">static<span class="s2"> <span class="s5">dispatch_once_t<span class="s2"> oncetoken;</span> </span> </span> </span></span></p></p><p class="p4"><p class="p4"><span class="s2"><span class="s1">dispatch_once<span class="s2">(&oncetoken, ^{</span> </span></span></p></p><p class="p4"><p class="p4"><span class="s2">Shareinstance = [[<span class="s5">nsobject<span class="s2"> <span class="s5">alloc<span class="s2">] <span class="s5">init<span class="s2">];</span> </span> </span> </span> </span> </span></span></p></p><p class="p4"><p class="p4"><span class="s2">});</span></p></p><p class="p3"><p class="p3"><span class="s2">@end</span></p></p><p class="p3"><p class="p3"><span class="s2">2. In appdelegate, this writes</span></p></p><p class="p1"><p class="p1"><span class="s1">-(<span class="s2">BOOL<span class="s1">) application: (<span class="s3">uiapplication<span class="s1"> *) application didfinishlaunchingwithoptions: ( <span class="s3"> Nsdictionary<span class="s1"> *) launchoptions {</span> </span> </span> </span> </span> </span> </span> <span style="line-height: 1.5;"> </span></p></p><p class="p4"><p class="p4"><span class="s5"><span class="s6">NSLog<span class="s5">(<span class="s7">@ "~~~~%@~~~~~~"<span class="s5">, [<span class="s1">singlonetest<span class="s5"> <span class="s1">shareinstance<span class="s5">]);</span> </span> </span> </span> </span> </span> </span> </span></span></p></p><p class="p5"><p class="p5"><span class="s4"><span class="s1">return<span class="s4"> <span class="s1">YES<span class="s4">;</span> </span> </span> </span></span></p></p><p class="p1"><p class="p1"><span class="s1">}</span></p></p><p class="p1"><p class="p1"><span class="s1">Printing results:</span></p></p><p class="p1"><p class="p1"><span class="s1"><strong>singlonedomo[5469:104528] ~~~~<nsobject:0x7fff32e0d560>~~~~~~</strong></span></p></p><p class="p1"><p class="p1"><span class="s1">3. Create the Singleton class again in the controller</span></p></p><p class="p1"><p class="p1"><span class="s1">-(<span class="s2">void<span class="s1">) viewdidload {</span> </span></span></p></p><p class="p2"><p class="p2"><span class="s3">[<span class="s4">Super<span class="s3"> <span class="s1">viewdidload<span class="s3">];</span> </span> </span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1"><span style="line-height: 1.5;"> </span> <span class="s5" style="line-height: 1.5;">NSLog<span class="s3">(<span class="s6">@ "~~~~%@~~~~~~"<span class="s3">, [<span class="s1">singlonetest<span class="s3"> <span class="s1">shareinstance<span class="s3">]);</span> </span> </span> </span></span></span></span></span></span></p></p><p class="p3"><p class="p3"><span class="s1"><span style="line-height: 1.5;">}</span></span></p></p><p class="p3"><p class="p3"><span class="s1"><span style="line-height: 1.5;">Printing results:</span></span></p></p><p class="p1"><p class="p1"><span class="s1"><strong>singlonedomo[5469:104528] ~~~~<nsobject:0x7fff32e0d560>~~~~~~</strong></span></p></p><p class="p1"><p class="p1"><span class="s1">Two times the same printing results, proved to be an object instance, so in the entire project, the singleton can skip multiple controllers, record their own state, do not need to pass the value of the Page.</span></p></p><p class="p1"><p class="p1"><span class="s1">A classmate asked, What do you want to create a singleton that is not destroyed at the end of the method execution? Because the static ID shareinstance, static puts the <span class="s2"> <span class="s4"><span class="s2"> <span class="s4"><span class="s2"> <span class="s2"> singleton pointer in the static storage area, causes the data to persist, initializes the program at the beginning, and initializes it only once. Do not destroy with the runtime Mechanism. So each call <span class="s2">+ (<span class="s3">ID<span class="s2">) shareinstance;<span class="s2"> The method, in fact, is to take the same singlonetest Object. </span></span></span></span></span></span></span></span></span></span></span></p></p><p><p>iOS notes-a single-case Text code explanation</p></p></span>
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.
A Free Trial That Lets You Build Big!
Start building with 50+ products and up to 12 months usage for Elastic Compute Service