XCode トラブル

最悪のIDE。Beta版なみの品質。ファイル消失やクラスを認識しないなどどうしようもない事態に陥ること多数。

環境切り替え

https://qiita.com/Todate/items/a2e6a26731c79bd23e02#%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E3%

BuildConfigという仕組みで、内部で#ifで分けることができる。UserDefined Settingにキーを追加することで、info.plistでもBuildConfigに応じた値を取得可能

	
       #if RELEASE
           return "https://www.example.co.jp"
       #else
           return "https://dev.example.co.jp"
       #endif

TARGETSでも同じようなことができるのだが、使っているところは少ないようだ。

ビルド

ローカルでxcode-build

sudo xcode-select -s '/Applications/Xcode12.app/Contents/Developer'
xcode-select -p
xcodebuild -version
xcodebuild -workspace project.xcworkspace -scheme Camera -configuration Debug archive -archivePath .

fastlane

   gym(
     scheme: "MyApp",
     configuration: "Staging",
     export_method: "ad-hoc or development or enterprise or app-store",
     include_symbols: true,
     clean: true,
   )

bitrise (xcode-archive)

iOS15

XCode13

https://www.hackingwithswift.com/articles/236/whats-new-in-xcode-13

Store Kit2

Swift 5.5

https://www.hackingwithswift.com/articles/233/whats-new-in-swift-5-5

UIKit

UIActivityViewControllerシェアボタンなどで出てくるモーダル
UIButton通常のボタン
UINavigationBar設定アプリなど改装を持ったナヴィゲーション
UITabBar時計アプリ
UIToolbarサファリの下部のボタンなどを表示するバー
UIBarButtonItemUIToolbarのボタン

用語集

ipazipファイルで固めたアプリのアーカイブ
plistプロパティのXMLファイル
entitlementspackage名などが記載されている。pushの設定などもこちら
SwiftUIiOS13より利用可能な宣言的UI
UIKit古くから使われているコードベースのUI。StoryboardもxibもUIKitが使われている

配布

端末の上限

Deploy Gate

Xcode

勉強まとめ中

トラブルシューティング

Editor placeholder in source file直しても出ていたことがあったので、Clean Build Folder
UITableViewControllerがクラッシュオブジェクトインスペクタで修正して保存してなくて、紐付けが見つからず落ちた

必要環境

OSの要求バージョンが比較的厳しくて、MacOSリリースされた翌年あたりからそのMacOSが必須となる。iOS14.5の対応に必要なXCode12.5からBig Surが必須となる

複数バージョン入れる

入れた後でXcode_xxみたいに改名するだけっぽい

ショートカット

Windows領域操作

左側はCommand+0で非表示。数字で切り替え 右側はOpt+Coomand+0で非表示。数字で切り替え

日常利用

ファイルを開くCmd+Shift+O
選択範囲を整形Ctrl+I

調べる

用語集

インスペクターペインプロパティ編集
ライブラリーペインフォーム部品

ショートカットキー

Ctrl + iフォーマット
変数状でOptionクイックヒント

UI部品

UINavigationBar設定画面で利用される階層ありのNavi
UITabBar時計で使われるタブBar
UIBarButtonItem一般的にアプリの下部の複数ボタン並べる
ImageViewaspectfillで画像の縦横比に合わせる

Objective-C

一行知識

#import<>だと標準ライブラリのディレクトリから検索。""だと現在のディレクトリから検索。一度読み込んだものは再度読み込まない。
ViewController間での値の共有プロジェクト名Delegateのプロパティを利用する。[[UIApplication sharedApplication] delegate]]で取得可能
IBOutletInterfaceBuilderの部品のプロパティにつける接頭語。IBActionも同様
IBActionイベントプロシージャーのようなもの。
XXXAppDelegate.hAndroidで言うところのライフサイクルを管理する。アプリケーションコントローラー
XXXViewController.hViewのコントローラー。xibファイルを持つ
オブジェクト型の変数ポインタなので*varNameのように*が必要。

Javaとの比較

プロパティはJavaと同じ感覚でつかえるけど、メソッドの呼び方が他の言語と比べると特殊。メソッド呼び出しがネストしてたら目も当てられない複雑さ。

this.someMethod(arg1, arg2)[self someMethod:arg1 arg2:arg2]
Hoge hoge = new Hoge();Hoge *hoge = [[Hoge alloc] init];
ArrayNSArray
ListNSMutableArray
MapNSMutableDictionary
interfaceprotocol
view.getI()sender.tag
プリファレンスNSUserDefaults

インスタンス変数

結構混乱したので記述しておく。インスタンス変数は基本privateなものをさす。property宣言をすると自動的にインスタンス変数とアクセスメソッドが作成されるようだ。javaだとインスタンス変数はスコープに関係ないが、Objective-Cにおいてはprivateなものと解釈するのが安全。

ARCとは

参照カウントを自動でやってくれる機構。コンパイル時にソースに参照上げ下げなどを挿入してくれる。

iOS

プロジェクトファイルの構成

一つのViewControllerだけのアプリケーションであればシンプルで、ViewControllerで使いたい部品をViewController.hに接続してあげればよい。アプリ全体の起動、終了にかかわることはViewControllerに記述するのではなく、AppDelegateにまさに委譲している。これにより複数ViewControllerがあるアプリでも、アプリ全体に関する設定の記述を迷わなくてすむのだ。

アプリケーションデリゲート

イベントの通知をうけるメソッドを定義してある。Androidでいうところのライフサイクルイベント。どのときに呼ばれるかはメソッド名を見れば一目瞭然。またActivityにListenerを実装するようにコントローラー自体にdelegateメソッドを持たせることも可能。その場合はViewController.hでプロトタイプを宣言しておく。たとえばUITextFieldDelegateを実装する場合は<UITextFieldDelegate>と宣言し、実装クラスでtextFieldShouldReturnメソッドを実装する。UIAlertViewにもdelegateを指定することができる。ボタン押されたときの処理分岐をViewControllerで実装することができる。

複数Viewでの情報共有

アプリケーションデリゲートにプロパティを追加する。そのプロパティを各ViewControllerで利用する。なお利用するためにはimport文が必要

TavBarにViewを追加するときの手順

  1. テンプレートからCoCoaTouchのUIViewControllerのサブクラスを選択。h,m,xibの3ファイルができる
  2. タブアイテムを選択し、Identifyでクラスと結びつける。Attributeでxibと結びつける

コード内でUI部品の追加

UILabel *label = [[[UILabel alloc] init] autorelease];
[self.view addSubview:label];

お役立ちリンク集

http://golog.plus.vc/iphone/906/ http://d.hatena.ne.jp/moto_maka/20110425/1303673150

Xcode4

ナビゲータエリア

eclipseのパッケージエクスプローラーの位置にある。通常はファイル表示。シンボルナビデーターでクラス名やメソッド名のみ表示させることができる。

エディタ

アシスタントエディターの分割Viewメニューから選べる。また右上のプラスボタンで分割できる
アシスタントエディターで開くOption(Alt) を押しながらクリックする
開く場所を選ぶOption(Alt)+Shift を押しながらクリックする
メソッド定義へ飛ぶCommand(Windows)を押して、クリックか右クリックして定義へ飛ぶ

外部ライブラリ

frameworkフォルダに依存フレームワークを持ってくる

書籍情報

書籍名感想場所サポートサイト
iOSデバッグ&最適化技法 for iPad/iPhone入門レベルでは必要性を感じないが、そのうち再読必要上福岡図書館
10日でおぼえる iPhoneアプリ開発入門教室サンプル、画面キャプチャー豊富でこれよい!自宅
よくわかるiPhoneアプリ開発の教科書各パーツの説明は丁寧だけど、つなぎ合わせてのサンプルが少ない。Xcode4対応版もあるので注意NCChttp://book.mycom.co.jp/support/pc/iphonesdk_book/
iPhone/iPad/iPod touch プログラミングバイブル同じ著者のAndroid本と同じくコード上で部品を配置していくスタイル。インターフェースビルダーすら使わないNCC
Xcode4ではじめる Objective-CプログラミングほぼObjective-C本。4.2対応。コンソールアプリから始まり最後にちょいiPhoneアプリNCChttp://www.rutles.net/download/Xcode4_ObjectiveC/sapotopeji.html
Objective-C 超入門ほぼObjective-C本。4.2対応NCC

iTunesのバックアップフォルダ移動

Cドライブバックアップ先を変更できないというクソ仕様なのでジャンクションで対応

バックアップ先C:\User\ユーザ名\AppData\Roaming\Apple Computer\MobileSync\Backup
  1. 新しいバックアップ先を作成し、上記backupディレクトリ毎移動
  2. 以下のコマンドを実施。MybileSyncにbackupディレクトリが存在するとエラーとなるので注意
mklink /J "C:\User\ユーザ名\AppData\Roaming\Apple Computer\MobileSync\Backup" "d:\new\backup"

iOS開発読み直し


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-10-14 (金) 13:16:52