Upload
masayuki-nii
View
321
Download
3
Embed Size (px)
DESCRIPTION
Cocoa勉強会#56 2012/11/23 小ネタ集あなたの常識はすでに通用しない 新居雅行
Citation preview
小ネタ集あなたの常識はすでに通用しない
Cocoa Study #562012/11/23新居雅行
1
まずはクイズ形式
誰も答えないならこっちから当てるぞ !
2
文字列は続く
正しい表記でしょうか?正しいなら、それぞれの結果と型(クラス)は?• @”abc” “def”• @”abc” @“def”• ”abc” “def”• "abc" @"def"
たとえば、NSLog(@”abc” “def”);
がどうなるか?みたいな3
文字列は続く
正しい表記でしょうか?正しいなら、それぞれの結果と型(クラス)は?• @”abc” “def”• @”abc” @“def”• ”abc” “def”• "abc" @"def"
@”abcdef”
たとえば、NSLog(@”abc” “def”);
がどうなるか?みたいな3
文字列は続く
正しい表記でしょうか?正しいなら、それぞれの結果と型(クラス)は?• @”abc” “def”• @”abc” @“def”• ”abc” “def”• "abc" @"def"
@”abcdef”
@”abcdef”
たとえば、NSLog(@”abc” “def”);
がどうなるか?みたいな3
文字列は続く
正しい表記でしょうか?正しいなら、それぞれの結果と型(クラス)は?• @”abc” “def”• @”abc” @“def”• ”abc” “def”• "abc" @"def"
@”abcdef”
@”abcdef”
”abcdef”
たとえば、NSLog(@”abc” “def”);
がどうなるか?みたいな3
文字列は続く
正しい表記でしょうか?正しいなら、それぞれの結果と型(クラス)は?• @”abc” “def”• @”abc” @“def”• ”abc” “def”• "abc" @"def"
@”abcdef”
@”abcdef”
”abcdef”
エラー
たとえば、NSLog(@”abc” “def”);
がどうなるか?みたいな3
続く、続く、、、
こんなプログラムを書いてはまったことも• [NSArray arrayWithObjects: @”10” @”11, nil];これがありですね• [NSString stringWithFormat @”You know that I was “ “working for %@. But it’s better than %@”, a, b];
4
プロパティ
5
プロパティ
@synthesize 一切不要になったのか?
5
プロパティ
@synthesize 一切不要になったのか?• NO!
5
プロパティ
@synthesize 一切不要になったのか?• NO!• プロトコルにプロパティを定義したら記述しないとだめ
5
プロパティ
@synthesize 一切不要になったのか?• NO!• プロトコルにプロパティを定義したら記述しないとだめ@property NSString *newName は正しい?
5
プロパティ
@synthesize 一切不要になったのか?• NO!• プロトコルにプロパティを定義したら記述しないとだめ@property NSString *newName は正しい?• エラーになる
5
プロパティ
@synthesize 一切不要になったのか?• NO!• プロトコルにプロパティを定義したら記述しないとだめ@property NSString *newName は正しい?• エラーになる• newで始まる名前はだめ
5
Xcode
6
Xcode
実話:クラス名を変更できないって本当ですか?クラス名を変えるのにあっちこっち変更しないといけないし、ぐちゃぐちゃになってうまくいかないので、絶対にやってはいけないと、●○◎ボースクールの先生に言われました。変な名前のクラスにしちゃったけど、最初から作り直さないといけないの?
6
Xcode
実話:クラス名を変更できないって本当ですか?クラス名を変えるのにあっちこっち変更しないといけないし、ぐちゃぐちゃになってうまくいかないので、絶対にやってはいけないと、●○◎ボースクールの先生に言われました。変な名前のクラスにしちゃったけど、最初から作り直さないといけないの?• No!!!! Oh, No!
6
Xcode
実話:クラス名を変更できないって本当ですか?クラス名を変えるのにあっちこっち変更しないといけないし、ぐちゃぐちゃになってうまくいかないので、絶対にやってはいけないと、●○◎ボースクールの先生に言われました。変な名前のクラスにしちゃったけど、最初から作り直さないといけないの?• No!!!! Oh, No!• Xcodeのリファクタリングはそこそこ使えます
6
Interface Builder
7
Interface Builder
.mファイルにクラスと同一名のカテゴリを定義することで、プライベートなメソッドを定義できる。ここにアウトレットやアクションを定義することができるか?
7
Interface Builder
.mファイルにクラスと同一名のカテゴリを定義することで、プライベートなメソッドを定義できる。ここにアウトレットやアクションを定義することができるか?• YES!
7
Interface Builder
.mファイルにクラスと同一名のカテゴリを定義することで、プライベートなメソッドを定義できる。ここにアウトレットやアクションを定義することができるか?• YES!InterfaceBuilderにオブジェクトを配置することと、アウトレットあるいはアクションのプロパティ(あるいはメンバ変数)の両方を定義しないと、ドラッグして結合はできない
7
Interface Builder
.mファイルにクラスと同一名のカテゴリを定義することで、プライベートなメソッドを定義できる。ここにアウトレットやアクションを定義することができるか?• YES!InterfaceBuilderにオブジェクトを配置することと、アウトレットあるいはアクションのプロパティ(あるいはメンバ変数)の両方を定義しないと、ドラッグして結合はできない• NO!
7
Interface Builder
.mファイルにクラスと同一名のカテゴリを定義することで、プライベートなメソッドを定義できる。ここにアウトレットやアクションを定義することができるか?• YES!InterfaceBuilderにオブジェクトを配置することと、アウトレットあるいはアクションのプロパティ(あるいはメンバ変数)の両方を定義しないと、ドラッグして結合はできない• NO!• control+プログラム中の空白の位置へのドラッグ!
7
疲れたのでここからは普通のプレゼン
8
Storyboard Update
UIApplicationDelegateクラスに定義されていた以下のプロパティは未定義となった• @property NSWindow *window• たぶん、Ver.5.1からそういえば…• Launch Imagesがないタイプの解像度にはならないという仕様はどうよ?
9
Autolayout and Autosizing
Autolayoutの使用/不使用• ファイル単位で設定可能Autolayout使用時のInterface Builder• 右下のグレーのコントロールが増えた• Constraintに対してアウトレットと結合できるiOSでもAutoresizing• 実はいままでもいくらか問題にはなっていたけど、かなり顕在化してきたと言える
10
Autoresizingは何が問題か?
これをどう説明する?• 上下左右は赤線だと固定• 高さと幅は赤線だと可変• 可変が2つ以上だと• 全部固定はありえないので、右端のみ可変になるこれで問題があるパターンをWorkgroup Managerでみることができる
11
回転
iOS 5まで• UIViewController # shouldAutorotateToInterfaceOrientation:を実装して、変更可能な方向を示す• 実質的に、Autosizingで回転iOS 6以降• 何もしなくても回転する• Info.plistで回転可能な方向を示す• Autolayoutで回転が基本だが、AutosizingにしてiOS 5互換に
12
回転にいかに対応するか?
アプリケーション起動時• iPhone, iPod touch、ポートレイトに必ずなる• iPad:そのときの方向になるが、didRotateFromInterfaceOrientation:などは呼び出されない• UIViewControllerのinterfaceOrientationプロパティで現状は分かる
シンプルなレイアウトなら、縦横共有は可能
要はiOS 5までが非常にまずかっただけでは?• iPadでランドスケープ状態で起動したときに、通常とは異なるメソッド呼び出しになったり、初期状態ではポートレイトと認識されたりとけっこう苦労したが…
13
Autosizingではコントロールしきれない例
14
ローカライズ
15
16
Base Internationalization
ibtoolsでstringsファイル生成やマージをしていたのが完全に自動化された
17
あなたの疑問はみんなの疑問情報共有しましょう
18