サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
takebayashi.asia
December 23, 2011 ARCでweak参照が使えないクラスについて:NSWindowとか ARC便利ですよね。オブジェクトの確保や解放に関するコードがなくなるので全体の見通しが良くなってスッキリしますよね。え、GC?知らん。 で、ARCを有効にするとweak参照な変数が使えます。旧来のassignプロパティと同じような弱い参照なわけですが、参照先のオブジェクトが解放されると自動的にnilになってくれるイカしたやつです。便利ですね。 このweak参照、実はすべてのオブジェクトに使えるわけではありません。例えば、以下のようなプロパティを用意したとします。 ウインドウへの参照をアウトレットとして持とうとしているわけですね。しかしこのプロパティを含むコードを実行すると、以下のようなメッセージが出力されます。 objc[2242]: cannot form weak reference
OSX v10.8 Mountain Lionがリリースされましたね。Mountain LionではObjective-Cで待望のオブジェクトリテラルと添字アクセスがサポートされました。ここでは簡単な使い方を紹介します。 オブジェクトリテラル オブジェクトリテラルを使うことによって、今まで面倒だったCocoaオブジェクトの生成が簡単に行えるようになります。 例えば、3つのNSStringインスタンスを持つNSArrayインスタンスを生成するには、今まで以下のように書いていました。 NSArray *array = [NSArray arrayWithObjects:@"A", @"B", @"C", nil];
Xcode 4の“Convert to Objective-C ARC…”を使って「へへっ、楽チンだぜ」って言ってたらハマった時のお話です。主にNSWindowまわりで。 NSWindowにはisReleasedWhenClosedっていうプロパティがありますよね。これがYESだとウインドウが閉じられると同時に自動的に解放されるわけですが、これがデフォルトでYESなんですよね(NSPanelではNOがデフォルトですが)。しかしARC的にはこの解放を検知できないので、問題が起きる可能性があります。 論よりコード、例えば以下のようなコードがあったとします。 @implementation WindowToggleController { NSWindow *_window; } - (void)toggleWindow:(id)sender { if (_window) { [_window
先日Xcode 4.3がリリースされました。Xcode 4.3ではclangのバージョンが3.1となり、instancetypeという型をサポートするようになりました。 返り値のid型の推論 instancetypeの話の前に、id型の返り値について考えます。Cocoaでは、+ allocや- initといったメソッドは軒並みid型の値を返すようになっています。基本的に、id型の値はどのようなオブジェクト参照型にも代入できることになっています。 しかし、clangは以下のようなコードに警告を発します。 NSString *myBlog = [[NSURL alloc] initWithString:@"http://takebayashi.asia/"]; + allocも- initWithStringも返り値がid型なので本来ならばNSString *型の変数に代入しても文句は言われな
気になるブログエントリとかを読みやすく整形してくれるみんな大好きReadability。自分のアプリに組み込めるようにAPIも公開されています。が、API Docsの冒頭に次のような一文が。 All requests to the Readability service require access tokens. 認証マストですって。OAuth。わざわざページを読みやすくするためだけにOAuth認証なんてやってられません。現にみんな大好きReederは認証しなくてもReadabilityによる整形が可能じゃないですか! というわけで、認証せずに使えるReadabilityの非公式なAPIをご紹介します。認証せずにページを整形するには、次のような手順を踏めば良いみたいです。 CSRFトークンを取得 記事IDとセッションIDを取得 整形済みドキュメントを取得 こんな感じですね。ではもう少し詳
# プロジェクトのあるディレクトリに移動 $ cd path/to/xcode_project # Vendorfileを作成 $ echo 'lib "Reachability"' > Vendorfile # 依存性を解決 $ vendor install これだけです。簡単ですね。試しにXcodeでプロジェクトを開いてみると、ちゃんとReachabilityが追加されていました。こんな感じで、Vendorfileに依存するライブラリ(vendorって言うらしいですよ)を書いておけば、vendor installするだけでOKです。 ちなみに、vendor initとするとVendorfileのひな形を自動生成してくれるんですが、あろうことか存在しないvendorを指定してくれているのでインストールに失敗します。なんじゃそりゃ。 ちなみにVendorfileの書式はドキュメントにありま
このページを最初にブックマークしてみませんか?
『Takebayashi.Asia』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く