<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Hello World!!&#187; singletone</title>
	<atom:link href="http://bhags.org/?feed=rss2&#038;tag=singletone" rel="self" type="application/rss+xml" />
	<link>http://bhags.org</link>
	<description>Welcome to Sinyu&#039;s  site</description>
	<lastBuildDate>Mon, 06 Nov 2017 04:17:27 +0000</lastBuildDate>
	<language>ja</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.8.1</generator>
	<item>
		<title>dispatch_asyncの内部コードが実行されない時</title>
		<link>http://bhags.org/?p=648</link>
		<comments>http://bhags.org/?p=648#comments</comments>
		<pubDate>Tue, 13 Oct 2015 02:14:59 +0000</pubDate>
		<dc:creator><![CDATA[bhags]]></dc:creator>
				<category><![CDATA[Objective-c]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[dispatch_async]]></category>
		<category><![CDATA[singletone]]></category>

		<guid isPermaLink="false">http://bhags.org/?p=648</guid>
		<description><![CDATA[dispatch_asyncの内部コードが最後まで実行されず原因を調べた。 原因はsingleton[...]]]></description>
				<content:encoded><![CDATA[<p>dispatch_asyncの内部コードが最後まで実行されず原因を調べた。<br />
原因はsingletone実装の問題があった。</p>
<p>dispatch_asyncで呼ばれたsingletoneオグジェクトが<br />
正しく初期化されないことが原因。</p>
<p>[だめな方法]<br />
+(MyClass) shared<br />
{<br />
    static　MyClass *_sharedInstance = nil;<br />
    if(_sharedInstance == nil){<br />
        dispatch_once_t onceTokeon;<br />
        dispatch_once(&#038;onceTokeon, ^{<br />
            _sharedInstance = [[MyClass alloc] init];<br />
        });<br />
    }<br />
    return _sharedInstance;</p>
<p>}</p>
<p>[正しい方法]<br />
+(MyClass *){<br />
    static MyClass *sharedInstance;<br />
    @synchronized(self) {<br />
        if (sharedInstance == nil) {<br />
            sharedInstance = [[MyClass alloc] init];<br />
        }<br />
    }<br />
    return sharedInstance;<br />
}</p>
<p>[Apple 推奨]<br />
+(MyClass *) shared<br />
{<br />
    static MyClass *_sharedInstance = nil;<br />
    static dispatch_once_t onceToken = 0;<br />
    dispatch_once(&#038;onceToken, ^{<br />
        _sharedInstance = [[MyClass alloc] init];<br />
    });<br />
    return _sharedInstance;<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://bhags.org/?feed=rss2&#038;p=648</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
