Storyboardなんか使わない方がいい

iOSアプリを趣味やら仕事やらでほそぼそと作っていますが、 Storyboardを使う意味がよく分かりません。なんなんでしょうあの子。 でも 「なんで必要ないの?」 と聞かれると 「なんか色々めんどくせぇ。てやんでぃ」 としか言えなかったのですが、「ここがめんどくさい!」という部分がまとまった記事がありました。 ⇒ Q. StoryboardとXIBはどう使い分ければいいんだろうか? – Qiita 最近よく見るQiitaのまとめです。 (どうでもいいけどここに投稿している人ってみんなエンジニアなのにどうして自分のブログとかに書かないんだろう。使いやすいのかしら。) ってなわけで、Storyboardがいらないという理由の要点をまとめてみます。 Storyboardがいらない理由その1 「こんがらがる」 小規模ならまだしも、 規模が大きくなるとその分ページが増えて行きます。 こちらの画像はApplivのアプリのStoryboardです。(画像元:Catcher in the tech) (執筆時にはApp Storeから消えてました。何かあったのかな。) どうでしょう。確かに一見仕事してる感がムンムンと出てて、なんか待ち受けにしたいくらいカッコいいです。本音を言うと、したくはないです。 ここに新たなViewControllerを追加する場合、拡大したりスクロールしたり、色々探しまわって繋いで… 想像するたけで、汗がタラタラ出て来ます。本音を言うと、出て来はしないです。 Storyboardがいらない理由その2 「チーム開発に不向き」 Storyboardでコンフリクトが起きると、これを解消するのがすごく大変。 コードレビューも大変。打ち間違いに気づかない場合も多いです。 あと性格にもよりますが、ViewControllerをさっきの画像のようにきちっと並べたい。 誰かがズラしたり、新しいViewControllerが挿入されると直したくなります。でもまたズレるのさ。 Storyboardがいらない理由その3 「柔軟性がない」 おそらく一番大きな理由でしょう。 「このタイプのセルの背景はこの色で統一しよう。」⇒#defineで用意した値を入れられないから、スクロールして拡大して、探し回って同じ色を入力しなければならない。「やっぱり違う色にしよう」⇒スクロールして拡大して、探し回って…「あ、待って。やっぱりこの色にしよう」⇒ゲロゲロ UIImageViewの上にaddSubview出来なかったり、UIViewContllorの型が変更できなかったり、コードならささっと出来ることも大変な作業量になってしまうことがあります。 オシャレなアニメーションなんかはやっぱりコード上でないと実装できないです。 Storyboardを使わない方がいい理由まとめ ・Storyboardで出来ることは全てコードで出来る。(Storyboardでは出来ないことがある。) ・規模が大きくなると、Storyboardで得られるメリットよりデメリットの方が大きくなる。 ・なんか色々めんどくせぇ。てやんでぃ 今から、iPhoneアプリ作りを始める方は是非Storyboardなしでやった方がいいと思います。 ⇒ Xcode6でもストーリーボードなしのEmpty Applicationから始めたい

View More

Xcode8でコメントアウトが効かない場合

公開: 2016-09-15 22:31 どうもどうも。同じみのあっきぃさんです。 最近の趣味といえば散歩中の犬を探すことです。 そうです。飼い主が金持ちそうならば隙をついて入れ替わるつもりです。 早いもので、iOS10が出ました。 Xcodeのバージョンも上がってXcode8になりました。 ダウンロードに1時間くらいかかったのはさておき、使ってみるとなんと、 コメントアウトが効きません。(※ドラッグ選択でまとめていっきにやるやつ) なんだろうなー こわいなーこわいなー でもご安心を。プログラミング会のゴーストバスターことStack Overflowに答えは出てるんです。 ⇒ xcode8 – XCode 8 Beta 5 & 6 Comment out broken – Stack Overflow ターミナルで $ sudo /usr/libexec/xpccachectl と打った後、Macを再起動をさせるだけです。 これで見事に治りました。 (なんで治るかは知らない。) ではでは。

View More

Manifest.lock: No such file or directoryとかPods-resources.sh: No such file or directoryとか出るとき 【Xcode】【Pod】

こんにちは。最近、起床時間が最大12時間ずれるあっきぃです。起きたら夜の7時だった時の絶望感はやみつきです。ぺろり。 さてさてiPhoneアプリを開発するためにXcodeちゃんでPodを使っているのですがこんなエラーが diff: /../Podfile.lock: No such file or directorydiff: /Manifest.lock: No such file or directoryerror: The sandbox is not in sync with the Podfile.lock. Run ‘pod install’ or update your CocoaPods installation. まぁよくある現象で、再installすれば直ることが多いみたいですが、それでも直らない方へ 1.Manifest.lock: No such file or directoryと出る場合 Configurationsの設定が「None」になってるカモ。 Project > Info > Configurationsのところを確認しましょう。 「None」になってたら「Pods」を選択しましょ。 そしたらこんなエラーが出たよという方 Pods/Pods-resources.sh: No such file or directory 2.Pods-resources.sh: No […]

View More

【Xcode】 Please verify that your device’s clock is properly set, and that your signing certificate is not expired. (0xE8008018).とか出たら。

Xcodeをビルドしたら Please verify that your device’s clock is properly set, and that your signing certificate is not expired. (0xE8008018). ってなエラーが。 おそらくアメリカ大陸の言語だと思われます。そして意味はおおよそ「デバイスの時間がずれているまたはプロビジョニングファイルの有効期限が切れている。」といったところでしょう。 デバイスの時間設定は間違っていないので、なんかそんなようなファイルの有効期限が切れてしまったのだと思います。 Xcode4,5の時はここらへんのエラーで大変時間をとられたのは、今となっては良い思い出です。そしてXcode6からは優秀でもろもろ勝手にやってくれます。すこし寂しいです。 1.Preferencesを選択 左上のメニューから「Preferences…」を選択 2.AccountsタブからView Details Accountsのタブから、「View Details…」を選択 3.更新マークを押す クルクルを押します。 これで直っちゃう(はず)。 便利な時代になったもんだ。

View More

Xcode6 PCHファイルがないので追加する

Xcode6にてiOS8に対応させようとしたらどうにもビルドが通らなくなり、結局プロジェクトを作り直すことに。するとなんとXcode6からはデフォルトで入っているPrefix.pchが無いことに気づく。 てなわけで追加してみます。 どこでも良いですが、昔は「Supporting Files」の中にあったのでこの位置に追加。 「PCH File」ってのがあるのでそれを選択 名前はプロジェクト名-Prefix.pchにすると落ち着くカモ。(別に何でもいいです。) あとはBuild SettingsからApple LLVM 6.0 – LanguageのPrefix Headerにパスを追加します。 普通に追加したならば「プロジェクト名/ファイル名.pch」となります。 これでばっちぐー♪

View More

Xcode6でもストーリーボードなしのEmpty Applicationから始めたい

Xcode6になったとたん新規作成時のEmpty Applicationがなくなってしまいました。Appleさん的にはストーリーボードを使ってもらいたいようです。 が、ストーリーボードを使うメリットが未だに理解できないので出来れば使いたくない。 ちょいちょい調べてみると流石我らのStackOverflow。同じように悩んでる方々がいました。コメントなんか見てみも分かりますが、ストーリーボード不使用派は結構いるみたいですね。ふんふん。⇒ ios – Xcode 6 – Template without Storyboards – Stack Overflow さてそのやり方 1.Single View Applicationを選択 2.Storyboardを消す Xibファイルも嫌いな方はそれも消しちまえ。 3.AppDelegateに見たことあるコードを書く rootViewControllerに自分で作ったやつ渡せばよろし – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];        UIViewController *viewController = [[UIViewController alloc] init];        self.window.rootViewController = viewController;        [self.window makeKeyAndVisible];        return YES;} 4.Main Interfaceを空っぽにする Deployment Infoのとこです。 これでいつも通り開発できます♪ではでは♪

View More

Xcode5でiOS6.1のBaseSDKを使えるようにする

どうもこんにちは。先日「カイジの2部、3部」と「銀と金」の35巻分くらいを一気に読破したあっきぃ(@appstars_aki)です。 ざわ…ざわ… 今日はそんなカイジ好きかつXcodeを5.0にアップデートしたけどiOS7用にビルドする気なんかさらさらないぜ的な方のためのXcode5.0にiOS6.1のBaseSDKを入れようなお話です。 SDK単体ではダウンロードできないのでXcode4.6.3をこちらからダウンロードします。 すでに持っている人は不要です。 とりあえず今回はApplicationフォルダにXcode5.0が入っているのでXcode4.6.3はDesktopに置いてみました。(※つまり/Applications/Xcode.appがXcode5.0で~/Desktop/Xcode.appがXcode4.6.3となります。) あとはXcode5.0のSDKが入っているっぽいディレクトリにXcode4.6.3のSDKが入っているぽいディレクトリへのリンクを用意して上げるだけです。 Xcode5.0の中を見てみると… /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDks/iPhoneOS7.0.sdk これでOKかと思いきや出てこないのだ。ぬぬぬ。 どうしたもんかとその周辺を探すとversion.plistなるファイルを発見。 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version.plist 中をのぞいてみるとこんな記述 <?xml version=”1.0″ encoding=”UTF-8″?><!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”><plist version=”1.0″>        <dict>                <key>BuildVersion</key>                <string>668</string>                <key>CFBundleShortVersionString</key>                <string>7.0</string>                <key>ProductBuildVersion</key>                <string>11A465</string>                <key>ProjectName</key>                <string>iPhonePlatformSupport</string>                <key>SourceVersion</key>                <string>2036000000000000</string>        </dict></plist> どうみてもSDKの記述。ここにXcode4.6.3の方のversion.plistの記述を追加してみる。追記:dictはarrayタグで囲んでね。Qiitaより(2014-06-06 06:18) ~/Desktop/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version.plist <?xml version=”1.0″ encoding=”UTF-8″?><!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”><plist version=”1.0″>        <array>                <dict>                        <key>BuildVersion</key>                        <string>668</string>                        <key>CFBundleShortVersionString</key>                        <string>7.0</string>                        <key>ProductBuildVersion</key>                        <string>11A465</string>                        <key>ProjectName</key>                        <string>iPhonePlatformSupport</string>                        <key>SourceVersion</key>                        <string>2036000000000000</string>                </dict>                <dict>                        <key>BuildVersion</key>                        <string>774</string>                        <key>CFBundleShortVersionString</key>                        <string>6.1</string>                        <key>ProductBuildVersion</key>                        <string>10B141</string>                        <key>ProjectName</key>                        <string>iPhonePlatformSupport</string>                        <key>SourceVersion</key>                        <string>1824000000000000</string>                </dict>        </array></plist> すると通りました♪ なんかもっと簡単な方法があるような気がするので気づいちゃった人はぜひ教えてくださいませっ ではでは♪

View More