投稿

ラベル(Xcode)が付いた投稿を表示しています

Xcode 9でInstrumentsが実行できない不具合

イメージ
Xcode 9からの不具合なのかInstrumentsが実行できない状態になりました。 録画ボタンのような赤丸をクリックして開始しようとすると Permission to debug xxx.xxxx.xxx was denied. と表示されて開始しません。 以下の作業をしたら治りました。XcodeのPreferenceで - Preference -> Locations -> Command Line ToolsをXcode 8.3.3に切り替え - Instruments立ち上げ - エラーが出る - Preference -> Locations -> Command Line ToolsをXcode 9.0.1に切り替え 追記 別のプロジェクトで引き続き不具合が出るので治っていませんでした。

Xcodeのフォント/色の設定の変更が効かない

イメージ
Xcodeにはフォント/色を変える機能があります。 ところが、最近これがうまく効かなくなってしまいました。Xcodeのバージョンは9.0です。 いらないものを消しても、次にXcodeを起動した時に復活してきます。 自分が取った対策は以下です。 今までに自分で作った設定をどこかにメモして ~/Library/Developer/Xcode/UserData/FontAndColorThemes の中を全て削除して初期状態にし、その後Xcode上で必要なものを作り直す。 ~は/Usersの下の自分フォルダです。煙突が付いた家のアイコンのやつです。 ~/Libraryは普通は見えないのでForkLiftというソフトを使いました。あるいは、optを押しながらFinderのGoをクリックすると出てきます。 画像ではoptを押してないです。optを押すとスクリーンショットが取れなかったので。 参考 https://qiita.com/Humangas/items/420ae56cc6db2d3d998d

Auto Layoutで発生する黄色の警告

イメージ
Auto Layoutで発生する黄色の警告は、自動修正機能がある。この自動修正機能は、エラーのあるソースコードに対するFixボタンのようなもの。以下は、この自動修正を行ったレポートである。なぜその警告が出るかはわからないのでひとまず置いといて、自動修正を行ったときの挙動を報告するものである。使用したXcodeのバージョンは9.0。 LeadingとTrailingに対するConstraint警告 Xcode9で既存のプロジェクトを開くとこんな警告が出ました。 Fixed leading and trailing constraints may cause clipping, one of them should have a constant ≥ standard space. 選択肢1 : Use Fixed Leading and Resizing Trailing Constraints Adjust to include a fixed leading constraint and a trailing constraint with a constant ≥ standard space. Recommended if the view is on the left half of the parent view. 選択肢2 : Use Resizing Leading and Fixed Trailing Constraints Adjust to include a leading constraint with a constant ≥ standard space and a fixed trailing constraint. Recommended if the view is on the right half of the parent view. 文を読んでも何を言っているかわからないので、簡単なプロジェクトを作ってテストしました。メインのviewの上にラベルを一つ置くものです。ラベルと親viewとの間にleadingとtrailingの制約を付けました(他の制約を述べるのは割愛)。この警告はleadingとtrailingのどちらかを26以上にすると発生しました。どちらかを26以上にしただけで両方の選択肢が出てきます。...

アプリを iPad Pro 10.5 インチに対応させるには

イメージ
iPad Pro10.5インチが出ました。 既存のアプリを10.5インチ画面に対応させるわけですが、Xcode上でどこを設定すれば対応になるのか疑問です。ここで言う対応とは画面のサイズを取得したときに1112×834(10.5インチiPadのデータ)が得られる状態のことを言っています(コードは下記)。前回の12.9インチの時は苦労しました。 いろいろ触って見つけました。 今回はRequires full screenのようです。 なんでこんなに微妙なところにするのか Requires full screenをONにするとシミュレータで10.5を選択し起動しても9.7のサイズ(1024×768)が取得できます。 Requires full screenをOFFにするとシミュレータで10.5を選択し起動すると10.5のサイズ(1112×834)が取得できます。 override func viewDidLoad() { super.viewDidLoad() let deviceHeight = UIScreen.main.bounds.height let deviceWidth = UIScreen.main.bounds.width print(deviceHeight, deviceWidth) } 環境は、Xcode 8.3.3上でプロジェクトの作成とシミュレータ実行を行いました。 これ以外にある可能性もありますし、このやり方が常にうまくいくとは限らないと思いますが。

Xcode 8.2 はシミュレータでスクリーンショットを撮ると落ちる on El Capitan

El Capitan 上の Xcode 8.2 は、シミュレータに付いているスクリーンショット撮影機能(File -> Save Screen Shot)を使うと落ちます。厳密に言うと1回目はOKで2回目に落ちる。 対策は シミュレータで、Edit -> Copy Screen Previewで、File -> New from Clipboard 手間もそんなに変わりません。 stackoverflowの記事(英語)

No Common Blocks - Xcode 8から起こりがちなリンクエラー

Build SettingにあるNo Common BlocksというものがXcode 8からデフォルトでOnの模様。古いプロジェクトを初めてXcode 8で開くときに出てくる、コンパイラ設定変更の警告に従うとOnにされる。 これがOnだとObjective-Cのプロジェクトで、例えば あるヘッダーでグローバル変数を定義している(例 : int a; ) そのヘッダーが2箇所以上から#importされる の条件でリンクエラーを起こします。 externで回避しました。 ヘッダー側はextern int a; 実装側でint a; externの説明は他を参照して下さい。 検索用 Xcode 8 No Common Blocks Apple Mach-O Linker Error Linker command failed with exit code 1 (use -v to see invocation) Message from debugger: Terminated due to signal 15

Swift2.2からSwift3.0への変換を行ってみて

イメージ
Xcode8のGMが出たので、Swiftを2.2から3.0へ変換しました。自動でコンバートするXcodeの機能を使いました。 変換箇所があらかじめ表示されるので、一通り見て気が付いたことを書いていこうと思います。 enumの要素の頭文字が小文字に統一 どっちが正解なのかなぁと思いながらプログラムを作成していた部分なのではっきり決めてくれて良かったです。 配列の初期化メソッド 配列の初期化によく使われる init(count: repeatedValue: )が init(repeating: count: ) になりました。順番が変わって、さらに現在分詞になりました。 NS抜け NSBundle が Bundle へ変更 NSIndexPath が IndexPath へ変更 NSURL が URL へ変更 Appleに従うのみ。 タイプメソッド扱いしていたものがタイププロパティ扱いに NSBundle.mainBundle() が Bundle.main へ変更 UIScreen.mainScreen() が UIScreen.main へ変更 UIDevice.currentDevice() が UIDevice.current へ変更 UIColor.whiteColor() が UIColor.white へ変更 //例 open class var white: UIColor { get } 従うのみ。 CoreGraphics衣替え CGRectMakeなどのC言語ベースのCG***関数がSwift3.0では廃止になっています。 (旧)CGRectMake(***) が (新)CGRect(***) へ変更、CGRect(***)の方はSwiftの構造体のinit命令呼び出しです。 (旧)CGPointMake(***) が (新)CGPoint(***) へ変更、CGPoint(***)の方はSwiftの構造体のinit命令呼び出しです。 (旧)CGRectContainsPoint(CGRect rect, CGPoint point) が (新)CGRectインスタンスに対するcontains(_:)メソッドへ変更 (旧)CGContextFillPath(CGContext...

iOS10対策

イメージ
Privacy - Media Library Usage Description この問題はシミュレータ(Xcode8.0)で発生したが、実機では発生しませんでした。 iPodライブラリの曲をアプリ内で使うとき、ユーザーに許可を取るようになりました。 この時の文面をinfo.plistに設定する必要があります。 Privacy - Media Library Usage Description(rawキーではNSAppleMusicUsageDescription)に何か文を追加します。 これを設定しておくと、アプリがライブラリにアクセスしようとしたところで、Don't allow / OKダイアログをOSが勝手に出してくれて、その中に先ほどの自分で追加した文が表示されます。 これを設定しないと、アプリが落ちます。 出す文章を各言語毎に変えたい時は、InfoPlist.stringsのローカライズをするとよいでしょう。 xibファイルのBuilds for この問題はシミュレータ(Xcode8.0)で発生したが、実機では発生しませんでした。 [UIDeviceRGBColor length]で実行時エラーが発生しました。これは自分で書いたプログラムではないので原因がわかりにくかったのですが、xibファイルのBuilds forが未設定でした。Xcode3の時に作成したプロジェクトで発生しました。xibファイルのBuilds forをDeployment Target (8.0)にしました。

Xcode7の時点でCertificate(証明書)とProvisioning Profileの作成は(ほぼ?)全自動に

イメージ
Certificate(証明書)とProvisioning Profileを全部削除した状態で、Xcode7でデバッグ(手元デバイスでの動作チェック)とストアへの申請を行い、どの程度自動作成機能が使える状態になっているか確認する。頻繁にチェックしているわけではないので実はXcode6のときにすでに出来ていたと言われる可能性もあるが、とりあえずやってみる。 1、developer.apple.comのCertificates,Identifiers & ProfilesページでCertificateとProvisioning Profileを全部削除する。App IDとDeviceは使用するものが設定してある。App IDはそれぞれのアプリ個別のもののみがある。 2、Xcode7の環境設定の中のAccountsのView Details...ボタンをクリック。出てきた一覧表に上下2つのエリアがありますが、上のSigning IdentitiesはCertificateに対応しているようです。Provisioning Profileがあれば(ローカル環境に残ったもの?)削除する。Signing IdentitiesのiOS DevelopmentとiOS DistributionにはCreateボタンがあるが作成はせずにスルー。 3、Xcode7でプロジェクトを開く。Bundle Identifierは設定してある。当然、No provisioning profiles foundの黄色警告が出る(ターゲット設定のGeneralタブのIdentitiy)。修正するためのFix Issueボタンも表示される。この時点でシミュレータでは実行可能。 実デバイスで実行しようとするとNo Provisioning profiles foundの赤色アラームが発生。実デバイスでの実行は不可。 4、ここでお待ちかねのターゲット設定のGeneralタブのIdentitiyのFix Issueボタンを押す(裏で何をやっているかわからないから好きではないという意見もあるかも)。すると iOS DevelopmentのCertificateが作成 され(Createボタンが消える)、App IDにも Xcode iOS Wildcard App IDという...

XcodeのAssistant EditorのManualを、選べない状態から正常な状態にする

イメージ
Xcodeを使っていて困ることの一つにAssistant EditorのManualが正常に機能しないということがあります。どういうことかというと 通常は このようにManualの下にProjectがあり、その下にある任意のファイルを選べるようになっています。 しかし、ときどき このようになり、現在選ばれているものから変更出来ない状態になります。 ここから正常な状態に復帰させる(ことが出来るかもしれない)手順です。 Xcode6.2 OSX10.9 で確認しております。他の環境では出来ない可能性もあります。 1,まずManual以外のものを選択し表示を切り替えます。 2,一旦Assistant Editorを閉じます。 3,再びAssistant Editorを表示させます。 4,Manualが正常に戻る(かも)。 自分の環境では100%修正可能でしたが、どんな環境でも必ず正常に復帰できるかどうかはわかりません。参考になれば。 ちなみに、そもそも何故不安定な状態になるかですが、いろいろやってみたところ"Manual"自体をクリックしたときの制御が不安定のようです。Manualにして何かのファイルを表示したいときはマウスで目的のファイルまで辿り着いてからクリックするとこの不安定なポイントを避ける事が出来ます。