UITableViewの初期化
iOSのテーブルビューを使いたいので勉強しようとしたら、自分の環境だと詰まったのでメモ。
ここを見ながら勉強してた。
http://kurrytran.blogspot.jp/2011/10/ios-5-storyboard-and.html
動かそうとしてみると、ビルドは通るけどSIGABRTが出てアプリが落ちる…
しかもSIGABRTの原因がログに出てくれない…
(見方をわかってないだけかも)
のでブレークポイント置いて、セルに文字設定する前に落ちてるのを発見。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; //以下略
何でテンプレートのままなのに落ちるんだろうと思ったら、viewDidLoadでCellIdentifierが一致する再利用可能なセルのオブジェクトを登録しとかないといけないんだそうで。
これ文字にすると動きわかってないの丸わかりで恥ずかしいな。
このブログを参考にさせてもらいました。
http://dev.classmethod.jp/smartphone/iphone/ios6-uitableview/
ついでにテーブルビューの使い方参考にしてたページのやり方はiOS5.xのやり方で、6.0以降は再利用可能なセルの使い方が違うことにも気づけたので助かりました。
あとこの辺を使ってSIGABRTの対処とか例外処理とかちゃんと勉強しないと…
http://blog.9wick.com/2012/04/sigabrt/
少しずつでも
始めました。Head First デザインパターン。
Head Firstデザインパターン ―頭とからだで覚えるデザインパターンの基本
- 作者: Eric Freeman,Elisabeth Freeman,Kathy Sierra,Bert Bates,佐藤直生(監訳),木下哲也,有限会社福龍興業
- 出版社/メーカー: オライリージャパン
- 発売日: 2005/12/02
- メディア: 大型本
- 購入: 14人 クリック: 362回
- この商品を含むブログ (88件) を見る
通勤時間とか昼休みにも読みたいのでAmazon.comでKindle Editionを購入。
初代iPadなので重いです…
ブログ書くって思うと、本読むときにまとめる意識が向上するかなと思ってたけど、
見事に忘れてたので、内容のまとめは次回から書きます…
NSStringのnull or emptyチェック
一人でコーディングしてると、自分が書いたコードがベストなのかどうかわかんなくて不安になったので調べた。
最初はシンプルに
NSString *text; if (text == nil && [text isEqualToString:@""]) { // nilのとき }
って書いてたんだけど、JavaでいうApache StringUtilsのisBlank()的なメソッドはないもんかと探してみたら、意外な方法があるとな。
http://stackoverflow.com/questions/6177719/testing-for-nil-in-objective-c-ifx-nil-vs-ifx
Q&Aの趣旨とはちがうけど、Objective-Cのif文の条件式に、nullチェックかけたいオブジェクトを入れると、nullのときfalseを返してくれる言語仕様がある。なのでこんな書き方もできる。
if (text) { // nilのとき }
(元記事は大まかに言うと
Q:この書き方と、text == nilどっちがいいの?
A:この書き方だと人によっては条件文がナニコレってなるから、text == nilのほうがいいときもあるかもね。状況によりけりかな。って感じ。)
さらにこれを発展させると、
http://stackoverflow.com/questions/899209/how-do-i-test-if-a-string-is-empty-in-objective-c
if([text length]==0){ // nilのとき }
こうすると、textがnullだった時点で条件文がfalseになるし、空文字のときのチェックもできて短くてハッピーだね。って方法があった。
ただし、ちょっとした見た目の動作と実際の動作に飛躍があって、nullのときのlengthは0だから0==0でtrueになんないの?って勘違い起きそうじゃない?って議論があるようで。
個人的には最後に挙げたコードで十分だし、読めると判断したのでこの方法を使おう。
ブログ開設記念。
IT業界に入って1年経ったし、日々学んだことをまとめるブログを作ります。主にJavaのことを書くことになると思います。あと個人で最近始めたiOS関連のこととか。
しばらくは自分がネットとかで集めた情報をまとめたりするのが中心になるのかなー
なんでブログを始たかというと、
・ちゃんと知識蓄積できてんの?
・アウトプットする機会少なすぎない?
・おもいっきりこの記事に触発されたから。1年遅れだけど。http://sunaot.tumblr.com/post/48053101279/4
・今までいろんなサイトの記事にお世話になったなー
・自分が調べる必要があるってことは他の人も調べることあるってことだよな。
この辺がいろいろモヤモヤしてきたんで、とりあえずやってみよう。ってことです。
目標は三日坊主になっても再会させて続けることで。