<?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; Objective-c</title>
	<atom:link href="http://bhags.org/?cat=17&#038;feed=rss2" 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>
		<item>
		<title>Xcode 6 iOS UILabel font size 自動リサイズ</title>
		<link>http://bhags.org/?p=642</link>
		<comments>http://bhags.org/?p=642#comments</comments>
		<pubDate>Sat, 26 Sep 2015 11:21:23 +0000</pubDate>
		<dc:creator><![CDATA[bhags]]></dc:creator>
				<category><![CDATA[Objective-c]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[auto resize]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[UILabel]]></category>

		<guid isPermaLink="false">http://bhags.org/?p=642</guid>
		<description><![CDATA[XCodeで iPad, iPhoneのサイズ別に fontのサイズを自動調節したい場合 元のネタ:[...]]]></description>
				<content:encoded><![CDATA[<p>XCodeで iPad, iPhoneのサイズ別に fontのサイズを自動調節したい場合<br />
元のネタ:</p>
<p>http://stackoverflow.com/questions/30008136/changing-uilabel-font-size-with-autolayout</p>
<p>公式サイト:</p>
<p>https://developer.apple.com/library/ios/recipes/xcode_help-IB_adaptive_sizes/chapters/ChangingtheFontforaSizeClass.html#//apple_ref/doc/uid/TP40014436-CH12-SW1</p>
<p>UILabelのfont設定のところの左にある+ボタンを押して対応<br />
compact width/regular height : iPhone portrait<br />
any width/compact height : iPhone Landscape<br />
regular width/regular height : iPad portrait</p>
]]></content:encoded>
			<wfw:commentRss>http://bhags.org/?feed=rss2&#038;p=642</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone ip address 自動更新 airplane モードをCommand lineで実行</title>
		<link>http://bhags.org/?p=606</link>
		<comments>http://bhags.org/?p=606#comments</comments>
		<pubDate>Mon, 29 Jun 2015 03:01:28 +0000</pubDate>
		<dc:creator><![CDATA[bhags]]></dc:creator>
				<category><![CDATA[Objective-c]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[airplane mode]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[launchctl]]></category>

		<guid isPermaLink="false">http://bhags.org/?p=606</guid>
		<description><![CDATA[[課題] iPhoneのGlobal ip addressを自動更新 [方針] 1.network [...]]]></description>
				<content:encoded><![CDATA[<p>[課題]<br />
iPhoneのGlobal ip addressを自動更新<br />
[方針]<br />
1.network deviceを再起動し更新 (成功)<br />
2.airplane modeをprivate apiを利用し on / off　(成功)</p>
<p>[対策詳細1]<br />
Step<br />
1)iPhone Jail break<br />
2)open-ssh install<br />
3)network restartメッソドを実装<br />
4)アプリをルートアプリに昇格</p>
<p>1) iPhone Jail break<br />
- 7.1.x<br />
- iTunesがインストールされているかを確認すること</p>
<p>http://tools4hack.santalab.me/how-to-ios71-ios711-untethered-jailbreak-pangu.html</p>
<p>2)-open-sshインストール<br />
cydiaよりインストール</p>
<p>3)network refresh method<br />
3-1)ダメな方法<br />
[参考URL] http://www.sinfuliphone.com/showthread.php?t=2144<br />
network commandをインストールしrefreshする方法はwifiは更新できるが<br />
3G/4G回線は更新できなかった。<br />
3-2)成功した方法<br />
system(&#8220;/bin/launchctl  unload -w /System/Library/LaunchDaemons/com.apple.CommCenter.plist&#8221;);<br />
system(&#8220;/bin/launchctl  load -w /System/Library/LaunchDaemons/com.apple.CommCenter.plist&#8221;);<br />
CommCenter自体をリロードすることでネットワークの更新に成功</p>
<p>4)アプリをルートアプリに昇格<br />
3)の実施にはアプリをルートアプリに昇格させる必要がある。<br />
4-1)main.mにルート権限取得コード追加<br />
//setuidとsetgidを実施<br />
int main(int argc, char * argv[]) {<br />
    @autoreleasepool {<br />
        if (!(setuid(0) == 0 &#038;&#038; setgid(0) == 0))<br />
        {<br />
            NSLog(@&#8221;Failed to gain root privileges, aborting&#8230;&#8221;);<br />
        }<br />
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));<br />
    }<br />
}<br />
4-2)iPhoneでアプリをルートに昇格(sample.app)</p>
<p>/private/var/mobile/Applications/xxxrandomstringxxxx/sample.appを<br />
/Applications/へ移行 </p>
<p>/Applications/sample.app/sample を<br />
/Applications/sample.app/sample2へ名前変更</p>
<p>エラー回避の為のDirectory 生成<br />
mkdir -p /var/db/launchd.db/com.apple.launchd</p>
<p>sydiaよりテキスト編集nanoをインストール</p>
<p>nanoで　/Applications/sample.app/sampleを新規生成<br />
下記ソースを追加</p>
<p>権限設定<br />
chown -r root.wheel /Applications/sample.app<br />
chmod 755 /Applications/sample.app/sample<br />
chmod 6775 /Applications/sample.app/sample2</p>
<p>spring boardをリスタート<br />
-端末を再起動するか、cydiaよりrespringアプリをインストールして実行<br />
上記でアプリがルート権限で実行可能になる</p>
<p>[対策詳細2]-airplaneをプログラムでon/off<br />
1)jail break<br />
2)ssh install<br />
3)private api /AppSupport.framework/RadiosPreferences.hを使用<br />
3-1)private frameworkをxcodeへ追加.frameworkの経路は下記<br />
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/PrivateFrameworks/AppSupport.framework<br />
3-2)airplane mode用下記headerを作成</p>
<p>#import <Foundation/Foundation.h><br />
@interface RadiosPreferences : NSObject {<br />
    int _applySkipCount;<br />
    BOOL _cachedAirplaneMode;<br />
    NSObject<OS_dispatch_queue> *_dispatchQueue;<br />
    BOOL _isCachedAirplaneModeValid;<br />
    struct __SCPreferences { } *_prefs;<br />
    BOOL notifyForExternalChangeOnly;<br />
}</p>
<p>@property (nonatomic) BOOL airplaneMode;<br />
@property (nonatomic) BOOL notifyForExternalChangeOnly;</p>
<p>+ (BOOL)shouldMirrorAirplaneMode;</p>
<p>- (BOOL)airplaneMode;<br />
- (void)dealloc;<br />
- (id)delegate;<br />
- (void*)getValueForKey:(id)arg1;<br />
- (id)init;<br />
- (id)initWithQueue:(id)arg1;<br />
- (void)initializeSCPrefs:(id)arg1;<br />
- (BOOL)notifyForExternalChangeOnly;<br />
- (void)notifyTarget:(unsigned int)arg1;<br />
- (void)refresh;<br />
- (oneway void)release;<br />
- (void)setAirplaneMode:(BOOL)arg1;<br />
- (void)setAirplaneModeWithoutMirroring:(BOOL)arg1;</p>
<p>- (void)setDelegate:(id)arg1;<br />
- (void)setNotifyForExternalChangeOnly:(BOOL)arg1;<br />
- (void)setValue:(void*)arg1 forKey:(id)arg2;<br />
- (void)synchronize;<br />
@end</p>
<p>3-3)on / off code<br />
    RadiosPreferences* pref  = [[RadiosPreferences alloc] init];<br />
    pref.airplaneMode = (YES/NO);<br />
    [pref synchronize];<br />
4)実行権限よentitlement追加<br />
airplaneモードメッソド実行のためにバイナリーへ下記entitlementを追加<br />
4-1)ldidインストール<br />
署名用のldidインストール<br />
git clone git://git.saurik.com/ldid.git<br />
cd ldid<br />
git submodule update &#8211;init<br />
/*<br />
make.sh内のXcodeのpathを修正<br />
*/<br />
./make.sh<br />
cp -f ./ldid　/usr/local/bin/ldid</p>
<p>4-2)アプリケーションを一度端末で起動<br />
上記で端末にアプリケーションが生成される<br />
あとは権限が適用されたバイナリに入れ替える</p>
<p>4-3)権限entitlement.xml</p>
<p><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"></p>
<plist version="1.0">
<dict><br />
    <key>com.apple.SystemConfiguration.SCDynamicStore-write-access</key></p>
<true/>
    <key>com.apple.SystemConfiguration.SCPreferences-write-access</key><br />
    <array><br />
        <string>com.apple.radios.plist</string><br />
    </array><br />
</dict>
</plist>
<p>4-3)権限をバイナリへ適用<br />
cd ~/Library/Developer/Xcode/DerivedData/{sampleapp-randomsting}/Build/Products/Debug-iphoneos/sampleapp.app/<br />
ldid -S/path/to/entitlement.xml sampleapp<br />
注意！-Sの次に空白を入れないこと。でないとエラーが発生</p>
<p>4-4)バイナリsampleappをiphoneへscp移行<br />
scp sampleapp root@iphone.local.ip:~</p>
<p>4-5)iPhoneのshellで<br />
cp ~/sampleapp /private/var/mobile/Applications/{randomstring}/sampleapp.app/</p>
<p>4-6)respring<br />
再起動もしくはcydiaよりrespringアプリをダウンロードしrespring</p>
<p>以上</p>
]]></content:encoded>
			<wfw:commentRss>http://bhags.org/?feed=rss2&#038;p=606</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>unityで出力されたiOSプロジェクトのSplash Image</title>
		<link>http://bhags.org/?p=559</link>
		<comments>http://bhags.org/?p=559#comments</comments>
		<pubDate>Thu, 11 Jun 2015 04:17:55 +0000</pubDate>
		<dc:creator><![CDATA[bhags]]></dc:creator>
				<category><![CDATA[Objective-c]]></category>
		<category><![CDATA[ios8.0]]></category>
		<category><![CDATA[Launch image]]></category>
		<category><![CDATA[Splash Image]]></category>

		<guid isPermaLink="false">http://bhags.org/?p=559</guid>
		<description><![CDATA[[現象] unityで出力されたiOSプロジェクトのSplash Imageの指定をLaunch I[...]]]></description>
				<content:encoded><![CDATA[<p>[現象]<br />
unityで出力されたiOSプロジェクトのSplash Imageの指定をLaunch Images Sourceで指定しても8.0以上で治らない件</p>
<p>[原因]<br />
8.0以上ではLaunch Screen Fileの設定がされているとこちらの設定が優先される。</p>
<p>[対策]<br />
LaunchScreenImage-Portrait.png<br />
LaunchScreenImage-Landscape.png<br />
の設定もアップデート</p>
]]></content:encoded>
			<wfw:commentRss>http://bhags.org/?feed=rss2&#038;p=559</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UILabel でテキストが更新されない時。</title>
		<link>http://bhags.org/?p=556</link>
		<comments>http://bhags.org/?p=556#comments</comments>
		<pubDate>Thu, 11 Jun 2015 00:52:58 +0000</pubDate>
		<dc:creator><![CDATA[bhags]]></dc:creator>
				<category><![CDATA[Objective-c]]></category>
		<category><![CDATA[CoreAnimation]]></category>
		<category><![CDATA[UIView更新]]></category>
		<category><![CDATA[uncommitted CATransaction]]></category>

		<guid isPermaLink="false">http://bhags.org/?p=556</guid>
		<description><![CDATA[[現象] サーバより非同期で取得したデータをLabelのテキストに入れたが きちんと更新が行われない[...]]]></description>
				<content:encoded><![CDATA[<p>[現象]<br />
サーバより非同期で取得したデータをLabelのテキストに入れたが<br />
きちんと更新が行われない。下記Warningがでる<br />
CoreAnimation: warning, deleted thread with uncommitted CATransaction</p>
<p>[原因]<br />
非同期で取得したためUIViewのanimationがメインスレッドで実行されないことが原因</p>
<p>[対策]<br />
メインスレッドで実行するように指定</p>
<p>[コード]<br />
//メインスレッドで実行<br />
dispatch_async(dispatch_get_main_queue(), ^{<br />
  // Perform any drawing/UI updates here.<br />
   self.currentBalance.text = [NSString stringWithFormat:@"%d",(int) balance];<br />
});</p>
]]></content:encoded>
			<wfw:commentRss>http://bhags.org/?feed=rss2&#038;p=556</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to reproduce bugs reported against App Store submissions</title>
		<link>http://bhags.org/?p=553</link>
		<comments>http://bhags.org/?p=553#comments</comments>
		<pubDate>Wed, 27 May 2015 23:15:05 +0000</pubDate>
		<dc:creator><![CDATA[bhags]]></dc:creator>
				<category><![CDATA[Apple Review]]></category>
		<category><![CDATA[Objective-c]]></category>

		<guid isPermaLink="false">http://bhags.org/?p=553</guid>
		<description><![CDATA[https://developer.apple.com/library/ios/qa/qa1764/[...]]]></description>
				<content:encoded><![CDATA[<p>https://developer.apple.com/library/ios/qa/qa1764/_index.html</p>
]]></content:encoded>
			<wfw:commentRss>http://bhags.org/?feed=rss2&#038;p=553</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UIViewController receive message order</title>
		<link>http://bhags.org/?p=533</link>
		<comments>http://bhags.org/?p=533#comments</comments>
		<pubDate>Sun, 08 Mar 2015 15:40:40 +0000</pubDate>
		<dc:creator><![CDATA[bhags]]></dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Objective-c]]></category>

		<guid isPermaLink="false">http://bhags.org/?p=533</guid>
		<description><![CDATA[see http://stackoverflow.com/questions/9539676/uiv[...]]]></description>
				<content:encoded><![CDATA[<p>see </p>
<p>http://stackoverflow.com/questions/9539676/uiviewcontroller-returns-invalid-frame</p>
<p>{{0, 0}, {768, 1004}} viewDidLoad<br />
{{0, 0}, {768, 1004}} shouldAutorotateToInterfaceOrientation:<br />
{{0, 0}, {768, 1004}} shouldAutorotateToInterfaceOrientation:<br />
{{0, 0}, {768, 1004}} viewWillAppear:<br />
{{0, 0}, {768, 1004}} shouldAutorotateToInterfaceOrientation:<br />
{{0, 0}, {768, 1004}} shouldAutorotateToInterfaceOrientation:<br />
{{0, 0}, {768, 1004}} willRotateToInterfaceOrientation:duration:<br />
{{0, 0}, {1024, 748}} viewWillLayoutSubviews<br />
{{0, 0}, {1024, 748}} layoutSubviews<br />
{{0, 0}, {1024, 748}} viewDidLayoutSubviews<br />
{{0, 0}, {1024, 748}} willAnimateRotationToInterfaceOrientation:duration:<br />
{{0, 0}, {1024, 748}} shouldAutorotateToInterfaceOrientation:<br />
{{0, 0}, {1024, 748}} viewDidAppear:</p>
<p>willRotateToInterfaceOrientation:duration: and before you receive viewWillLayoutSubviews.</p>
<p>The viewWillLayoutSubviews and viewDidLayoutSubviews methods are new to iOS 5.0.</p>
<p>The layoutSubviews message is sent to the view, not the view controller, so you will need to create a custom UIView subclass if you want to use it.</p>
]]></content:encoded>
			<wfw:commentRss>http://bhags.org/?feed=rss2&#038;p=533</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iOS PEM CREATE COMMAND</title>
		<link>http://bhags.org/?p=464</link>
		<comments>http://bhags.org/?p=464#comments</comments>
		<pubDate>Tue, 28 Oct 2014 11:56:18 +0000</pubDate>
		<dc:creator><![CDATA[bhags]]></dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Objective-c]]></category>

		<guid isPermaLink="false">http://bhags.org/?p=464</guid>
		<description><![CDATA[openssl pkcs12 -in xxx.p12 -out yyy.pem -nodes -cl[...]]]></description>
				<content:encoded><![CDATA[<p>openssl pkcs12 -in xxx.p12 -out yyy.pem -nodes -clcerts</p>
]]></content:encoded>
			<wfw:commentRss>http://bhags.org/?feed=rss2&#038;p=464</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unity Crash with CA::Display::DisplayLinkItem::dispatch()</title>
		<link>http://bhags.org/?p=344</link>
		<comments>http://bhags.org/?p=344#comments</comments>
		<pubDate>Sun, 19 Jan 2014 16:51:19 +0000</pubDate>
		<dc:creator><![CDATA[bhags]]></dc:creator>
				<category><![CDATA[Objective-c]]></category>
		<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://bhags.org/?p=344</guid>
		<description><![CDATA[解決策のURL http://forum.unity3d.com/threads/203506-Wo[...]]]></description>
				<content:encoded><![CDATA[<p>解決策のURL</p>
<p>http://forum.unity3d.com/threads/203506-Workaround-ios7-DisplayLink-Scrolling-results-in-crash</p>
<p>下記をコメントアウト</p>
<pre class="brush: plain; title: ; notranslate">
- (void)repaintDisplayLink
{
/*
    [_displayLink setPaused: YES];
    {
        static const CFStringRef kTrackingRunLoopMode = CFStringRef(UITrackingRunLoopMode);
        while (CFRunLoopRunInMode(kTrackingRunLoopMode, kInputProcessingTime, TRUE) == kCFRunLoopRunHandledSource)
            ;
    }
    [_displayLink setPaused: NO];
*/
    if(_didResignActive)
        return;
    SetupUnityDefaultFBO(&amp;_mainDisplay-&gt;surface);
....
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://bhags.org/?feed=rss2&#038;p=344</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nibを探せないとき</title>
		<link>http://bhags.org/?p=297</link>
		<comments>http://bhags.org/?p=297#comments</comments>
		<pubDate>Wed, 08 Jan 2014 06:57:55 +0000</pubDate>
		<dc:creator><![CDATA[bhags]]></dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Objective-c]]></category>
		<category><![CDATA[WorkingLogs]]></category>
		<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://bhags.org/?p=297</guid>
		<description><![CDATA[nibファイルを探せないエラーが発生し、iOS７では正常に動作した。 https://github.[...]]]></description>
				<content:encoded><![CDATA[<p>nibファイルを探せないエラーが発生し、iOS７では正常に動作した。</p>
<p>https://github.com/kstenerud/iOS-Universal-Framework/issues/152</p>
<p>resources load in iOS 7 but not iOS 6<br />
No milestone No one is assigned<br />
When running in the simulator, I&#8217;m adding the embedded framework to a test app. When run under 7.0.3, it runs with no issues. When run under 6.1 or less, it&#8217;s crashing with the following:</p>
<p>&#8216;NSInternalInconsistencyException&#8217;, reason: &#8216;Could not load NIB in bundle: &#8216;NSBundle (loaded)&#8217; with name &#8216;RequestViewController&#8221;</p>
<p>What would cause it to load under one and not the other? Have verified the bundle and all the resources are in the app bundle.<br />
4 participants        </p>
]]></content:encoded>
			<wfw:commentRss>http://bhags.org/?feed=rss2&#038;p=297</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
