最悪のIDE。Beta版なみの品質。ファイル消失やクラスを認識しないなどどうしようもない事態に陥ること多数。
https://qiita.com/Todate/items/a2e6a26731c79bd23e02#%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E3%
https://www.hackingwithswift.com/articles/236/whats-new-in-xcode-13
https://www.hackingwithswift.com/articles/233/whats-new-in-swift-5-5
UIActivityViewController | シェアボタンなどで出てくるモーダル |
UIButton | 通常のボタン |
UINavigationBar | 設定アプリなど改装を持ったナヴィゲーション |
UITabBar | 時計アプリ |
UIToolbar | サファリの下部のボタンなどを表示するバー |
UIBarButtonItem | UIToolbarのボタン |
ipa | zipファイルで固めたアプリのアーカイブ |
plist | プロパティのXMLファイル |
entitlements | package名などが記載されている。pushの設定などもこちら |
SwiftUI | iOS13より利用可能な宣言的UI |
UIKit | 古くから使われているコードベースのUI。StoryboardもxibもUIKitが使われている |
Editor placeholder in source file | 直しても出ていたことがあったので、Clean Build Folder |
UITableViewControllerがクラッシュ | オブジェクトインスペクタで修正して保存してなくて、紐付けが見つからず落ちた |
OSの要求バージョンが比較的厳しくて、MacOSリリースされた翌年あたりからそのMacOSが必須となる。iOS14.5の対応に必要なXCode12.5からBig Surが必須となる
入れた後でXcode_xxみたいに改名するだけっぽい
左側はCommand+0で非表示。数字で切り替え 右側はOpt+Coomand+0で非表示。数字で切り替え
ファイルを開く | Cmd+Shift+O |
選択範囲を整形 | Ctrl+I |
インスペクターペイン | プロパティ編集 |
ライブラリーペイン | フォーム部品 |
Ctrl + i | フォーマット |
変数状でOption | クイックヒント |
UINavigationBar | 設定画面で利用される階層ありのNavi |
UITabBar | 時計で使われるタブBar |
UIBarButtonItem | 一般的にアプリの下部の複数ボタン並べる |
ImageView | aspectfillで画像の縦横比に合わせる |
#import | <>だと標準ライブラリのディレクトリから検索。""だと現在のディレクトリから検索。一度読み込んだものは再度読み込まない。 |
ViewController間での値の共有 | プロジェクト名Delegateのプロパティを利用する。[[UIApplication sharedApplication] delegate]]で取得可能 |
IBOutlet | InterfaceBuilderの部品のプロパティにつける接頭語。IBActionも同様 |
IBAction | イベントプロシージャーのようなもの。 |
XXXAppDelegate.h | Androidで言うところのライフサイクルを管理する。アプリケーションコントローラー |
XXXViewController.h | Viewのコントローラー。xibファイルを持つ |
オブジェクト型の変数 | ポインタなので*varNameのように*が必要。 |
プロパティはJavaと同じ感覚でつかえるけど、メソッドの呼び方が他の言語と比べると特殊。メソッド呼び出しがネストしてたら目も当てられない複雑さ。
this.someMethod(arg1, arg2) | [self someMethod:arg1 arg2:arg2] |
Hoge hoge = new Hoge(); | Hoge *hoge = [[Hoge alloc] init]; |
Array | NSArray |
List | NSMutableArray |
Map | NSMutableDictionary |
interface | protocol |
view.getI() | sender.tag |
プリファレンス | NSUserDefaults |
結構混乱したので記述しておく。インスタンス変数は基本privateなものをさす。property宣言をすると自動的にインスタンス変数とアクセスメソッドが作成されるようだ。javaだとインスタンス変数はスコープに関係ないが、Objective-Cにおいてはprivateなものと解釈するのが安全。
参照カウントを自動でやってくれる機構。コンパイル時にソースに参照上げ下げなどを挿入してくれる。
一つのViewControllerだけのアプリケーションであればシンプルで、ViewControllerで使いたい部品をViewController.hに接続してあげればよい。アプリ全体の起動、終了にかかわることはViewControllerに記述するのではなく、AppDelegateにまさに委譲している。これにより複数ViewControllerがあるアプリでも、アプリ全体に関する設定の記述を迷わなくてすむのだ。
イベントの通知をうけるメソッドを定義してある。Androidでいうところのライフサイクルイベント。どのときに呼ばれるかはメソッド名を見れば一目瞭然。またActivityにListenerを実装するようにコントローラー自体にdelegateメソッドを持たせることも可能。その場合はViewController.hでプロトタイプを宣言しておく。たとえばUITextFieldDelegateを実装する場合は<UITextFieldDelegate>と宣言し、実装クラスでtextFieldShouldReturnメソッドを実装する。UIAlertViewにもdelegateを指定することができる。ボタン押されたときの処理分岐をViewControllerで実装することができる。
アプリケーションデリゲートにプロパティを追加する。そのプロパティを各ViewControllerで利用する。なお利用するためにはimport文が必要
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
eclipseのパッケージエクスプローラーの位置にある。通常はファイル表示。シンボルナビデーターでクラス名やメソッド名のみ表示させることができる。
アシスタントエディターの分割 | Viewメニューから選べる。また右上のプラスボタンで分割できる |
アシスタントエディターで開く | Option(Alt) を押しながらクリックする |
開く場所を選ぶ | Option(Alt)+Shift を押しながらクリックする |
メソッド定義へ飛ぶ | Command(Windows)を押して、クリックか右クリックして定義へ飛ぶ |
frameworkフォルダに依存フレームワークを持ってくる
書籍名 | 感想 | 場所 | サポートサイト |
iOSデバッグ&最適化技法 for iPad/iPhone | 入門レベルでは必要性を感じないが、そのうち再読必要 | 上福岡図書館 | |
10日でおぼえる iPhoneアプリ開発入門教室 | サンプル、画面キャプチャー豊富でこれよい! | 自宅 | |
よくわかるiPhoneアプリ開発の教科書 | 各パーツの説明は丁寧だけど、つなぎ合わせてのサンプルが少ない。Xcode4対応版もあるので注意 | NCC | http://book.mycom.co.jp/support/pc/iphonesdk_book/ |
iPhone/iPad/iPod touch プログラミングバイブル | 同じ著者のAndroid本と同じくコード上で部品を配置していくスタイル。インターフェースビルダーすら使わない | NCC | |
Xcode4ではじめる Objective-Cプログラミング | ほぼObjective-C本。4.2対応。コンソールアプリから始まり最後にちょいiPhoneアプリ | NCC | http://www.rutles.net/download/Xcode4_ObjectiveC/sapotopeji.html |
Objective-C 超入門 | ほぼObjective-C本。4.2対応 | NCC |
Cドライブバックアップ先を変更できないというクソ仕様なのでジャンクションで対応
バックアップ先 | C:\User\ユーザ名\AppData\Roaming\Apple Computer\MobileSync\Backup |
mklink /J "C:\User\ユーザ名\AppData\Roaming\Apple Computer\MobileSync\Backup" "d:\new\backup"