メソッドの目的は3種類に大別できる。 命令と通知と問い合わせだ。 - (void)doSomething;//命令 - (void)loadDidFinish;//通知 - (NSInteger)numberOfCells;//問い合わせ 命令と問い合わせはメソッド
@propertyのオプションのretainとassignをどう使いわけるべきだろうか? receiverがそのpropertyなしには成り立たない場合はassign、 そうでなければretainが良いだろう。 例えば、 id<myDelegate>d
MVCモデルにおけるViewの世界では、「意味」は意味を持たない。 viewはcontrollerのなすがまま。自らは何も考えない。 例えば、twitterでは 星形の「記号」が ”お気に入り” という「意味」を表す。 お気に入
x-code4で、ファイル名からファイルを開くのショートカットは Cmd+Shift+O だ。 ショートカット一覧をいくら眺めても見つからないと思いきや、 Open Quickly...という名前で普通に載っていた。
CoreDataはスレッドセーフではない。 NSURLConnectionで非同期に落としてきたデータをManagedObjectに詰めていると、 Saveのタイミングでたまに落ちる。 とりあえずここに乗っていた方法で解決できそう。 要
CGFloat navigationHeight = [[[self tabBarController] rotationgHeaderView] frame].size.height; CGFloat tabHeight = [[[self tabBarController] rotationgFooterView] frame].size.height; で取得できた
layoutSubviewsでscrollviewのframeを指定すると
動かない。 layoutSubviewsでscrollviewのframeを指定すると bounceがきかなくなる。 結構ハマった。 通常のscrollはできるのだが、 bounceアニメーションはsetFrame でリセットされてしまうようだ。
UIButtonにsubviewを追加したらボタンが押せなくなった。 試しにsubviewをボタンの左半分だけの大きさにしてみる。 右半分は押せる。左半分は押せない。 subviewがイベントを横取りしているようだ。 [subv
initメソッドの中では何をすべきか。 何もすべきではない。できる限り。 動的言語であるobjective-Cの基本思想は「使う時に作る」「必要なら呼ぶ」だ。 初期化の時点であれこれ用意するのは好ましくない。
しまった。 自前でsetterを用意する際に - (void)setMyProperty:(id)newValue{ [myProperty release]; myProperty = [newValue retain]; } としてしまっていたが、 これだと2回連続で呼ばれ
厳密に言えば、objective-Cでオーバーロードを行なうことはできない。 そもそもオーバーロードとは、多重定義の一種で、 同じ名前の、異なる引数を用いるメソッドを定義することを言う。Javaなどでよく使われる
どのように命名を行なえばいいのか? という問いに対する答えは簡にして素にして明快だ。 「コンテキスト内での一意性を保証する名称のうち、最も短く最も抽象的なもの」 である。 順に説明していこう。
NSDictionaryの中身は変更できない。 ゆえに使い回しはきかない。しかし一時的に使うには便利だ。 例えばデータの受け渡し。 データが変更されていない、という保証は大きなアドバンテージだ。 内容証明付きの
丸くすると影がつかない。 影をつけると丸くできない QuartzCoreを使えば CALayerのshadowとcornerRadiusを変更できるが、同時には適用できない。 角丸を有効にするためにsetMasksToBoundsをYESにすると、 sh
オブジェクトの連携には3つの方法がある。 delegateとnotificationとKVO(Key-Value Observing)だ。 どれも同じようなことができるのだが、 何が違うのか、どう使い分けるべきかを考えてみることにする。 こ
「ブログリーダー」を活用して、てくてくさんをフォローしませんか?