Your SlideShare is downloading. ×
Cocoa勉強会#56-小ネタ集あなたの常識はすでに通用しない
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Cocoa勉強会#56-小ネタ集あなたの常識はすでに通用しない

297
views

Published on

Cocoa勉強会#56 …

Cocoa勉強会#56
2012/11/23
小ネタ集あなたの常識はすでに通用しない
新居雅行

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
297
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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