Snow Leopard brought with it blocks (closures) for the C and Objective-C languages. Blocks at first seem to be nothing more than anonymous, inline functions, but that is only partially true, because they are also a lot like objects, carrying about their context data with them. Once you start playing with blocks, a whole new style of programming opens up to you, and you find uses for blocks in plac
About This is the M Cubed Software weblog. To find out more about us head to our about page. Search Prior to Apple acquiring NeXT, Objective-C had had relatively little added to it since it became a fully fledge language rather than simply a C preprocessor back in the 80s. About the only thing added for many years after Apple acquired NeXT was the @try…@catch…@finally exception syntax. Then in 20
Grand Central DispatchはMac OS X 10.6およびiOS 4に追加された新技術だ。 このGrand Central Dispatch(以下"GCD")は、プログラマー以外にその効用を説明することが難しい技術だ。漠然と「マルチコアプロセッサを効率的に使うための技術」と言っておくこともできるが、それじゃあなんでiOS 4に搭載されてんの?という話になってしまう。 これをプログラマー向けに説明するならば、次のような感じになるかと思う。 GCCを拡張してクロージャ的な機能を追加してみたら、非同期処理とか並列処理とかすげー書きやすくなったんで、ちょっとその辺りまとめてみました。 僕の個人的な意見としては、単にAppleのコンパイラー技術者たちがC言語ファミリー(C/C++/Obj-C)にクロージャを追加したかっただけなんじゃないかな、と考えている。 とりあえずマンデルブロ
はじめに 今回は、clangの静的解析機能を紹介します。 LeopardのOpenGLに採用されたことでも知られる、LLVMというコンパイラプラットフォームがあります。clangはLLVM内のプロジェクトのひとつで、gccに変わるC/C++/Objective-C用のLLVMフロントエンドを開発しています。 複数のAppleのエンジニアが開発に参加しており、Objective-Cを積極的にサポートしているのも特徴です。 clangでは、通常のコンパイラとして以外にもコードの内部構造にアクセスするいくつかの機能があり、そのひとつが静的解析機能です。 プログラムの静的解析 プログラムを実行せずにプログラムの問題点・バグなどを分析することを「静的解析」といいます。 最近では、JavaのFindBugsが有名ですね。 人力で行うコードレビューも、静的解析と言われることもあります(そりゃそうでしょう
OS X 10.6 以降の xcode では Objective-C に Blocks というシンタックスが追加されている。 Blocks Programming Topics: Introduction Perl でいうところの無名関数(コードブロック)を作ることができる機能で、Perlでいうところの my $f = sub { ... }; $f->(); は void (^f)() = ^{ ... }; f(); のように書ける。書式がきもいのはObjective-Cの定めなのであきらめましょう。 より詳しい書式については上記ドキュメントを見ると良い。 しかしデフォルトではPerlのコードブロックとはレキシカル変数の扱いが異なる。 my $i = 0; my $f = sub { return $i + 1 }; $i++; $f->(); # 2 を返す perlではこのようにレ
デザインパターンをObjective-C + Cocoaで解釈してみるこの連載も、いよいよ終わりに近づいてきた。残すところ、あと2パターンである。今回は、Template Methodパターンを取り上げる。 Template Methodとは Template Methodも、前回のStrategyと同じく、アルゴリズムに関するパターンになる。あるアルゴリズムを実現するときに、それをいくつかのステップに分割しておく。そうしておくことで、アルゴリズムを拡張する際には、サブクラスでそのステップを上書きすればいいということになる。これが、Template Methodパターンだ。 このパターンも、オブジェクト指向の考え方そのものと言えるだろう。GoF本でも、「template methodはたいへん基本的なもので、ほとんどすべての抽象クラスで見つける事ができる」と書かれている。オブジェクト指向プ
参考サイト iPhone Tutorial - Archivers, unarchivers, and serialization on Vimeo Cocoaフレームワークには、もともとオブジェクトをシリアライズするための仕組みが用意されているので簡単です。 NSCodingプロトコルで定義されているメソッドを実装すれば、オブジェクトがシリアライズ可能になります。 例えば、下のような設定画面の値を保存するときに便利です。 設定の保存にはもうひとつ、NSUserDefaultsを使う方法もあります。 しかし、設定画面がiPhoneの「設定」のところになってしまい、設定項目に気づかないことがあったり、設定を変更するためにはアプリケーションを終了しなければならないなど、不便なので私は使いません。 手順 シリアライズされるクラスにNSCodingプロトコルのメソッドを実装する。 NSKeyedA
Cocoa 正規表現ライブラリといえば、国産、かつ(たぶん)世界で最も利用されている OgreKit があるので、他には目が行きにくいかもしれませんが、恐らく最後発と思われる、「 RegexKit 」というフレームワークが出てきています。 国内・海外問わず、多くのアプリに採用されている、OgreKit の貫禄には負けますが、RegexKit の気合いも、なかなかのものです。まだご存じない方は、一度チェックしてみてください: ライセンス — BSD 正規表現エンジン — PCRE 特徴 64bit 対応 GC 対応 スレッドセーフ キャッシュ、低レベル API などを駆使して高速、低負荷に RSS フィードで更新される、Xcode 3 対応の完全なドキュメント(これが OgreKit への大きなアドバンテージかもしれない) Instruments.app 用の Instruments この
RegexKit Framework 上記のサイトからRegexKitLiteをダウンロードします。 RegexKitLite-2.2.tar.bz2を展開すると、以下のようになります。 RegexKitLite.h RegexKitLite.m RegexKitLite.html examples RKLMatchEnumerator.h RKLMatchEnumerator.m NSString-HexConversion.h NSString-HexConversion.m link_example.m main.m とりあえず、RegexKitLite.hとRegexKitLite.mの2つのファイルをコピーすれば一通りの正規表現は使えるようになります。 RegexKitLite.h、RegexKitLite.mをプロジェクトにコピーする プロジェクトを選択し、ファイル>情報を見る
お久しぶりです。 ちょっとした野望でObjective-Cの勉強しがてらプログラムを組んでいたのですが、 Basic認証で行き詰まりました。 やっと解決したので、Objective-CでもBasic認証できるよ、やった! Basic認証用にアカウントとパスワードをくっつけてBase64にエンコードする必要があるのですが、 エンコードはこちらhttp://homepage.mac.com/t_yamane/prog/Base64/page.htmlから頂いてきたソースコードを モジュールのヘッダにimportしてエンコードするようにしました。 NSDataに"stringEncodedWithBase64"というメソッドが追加になってます。 コイツを実行するとBase64でエンコーディングされたNSStringデータが返るようになっていて、 それをNSmutableURLRequestにくっ
日々iPhone SDKのTipsを探し回っていて、メモは残しているけど以前のエントリーへの更新がなかなか出来ないので、一定期間でメモが溜まったらまとめて更新、て風にしようかと。以下は前回から今回までの間で登場したTips情報です。※多分、多くの中のごく一部、でしょうね(^^;; Interface BuilderでカスタムUITableVIewCellを作るときの注意点http://d.hatena.ne.jp/KishikawaKatsumi/20081027/1225114665 短いサウンドの再生http://chikura.fprog.com/index.php?UID=1225187297 UITextField に自動的にフォーカスをあてるhttp://www.google.co.jp/url?sa=t&source=web&ct=res&cd=1&url=http%3A%2
プロパティの話を続けよう。今回は、プロパティを宣言するための文法を調べてみる。 プロパティの目的 まず、プロパティの目的を明確にしておこう。プロパティとは、「クラスにアクセッサメソッドを簡単に付加する」ために導入されたものだ。 以前であれば、クラスが持つインスタンス変数に安全にアクセスさせるには、アクセッサメソッドを手動で追加する必要があった。これを自動化してやろう、というのがプロパティの目的だ。 ここで注意しておきたいのは、プロパティを使うとそのアクセスではメソッド呼び出しが発生する、というところだろう。前回、Objective-Cではほぼ自由にインスタンス変数にアクセスできるということを紹介した。プロパティではこれらの手段は使わずに、適切なメソッドを提供することになる。 この手法の利点は、安全であるということだ。とくにObjective-C特有の、retainやreleaseを伴ったオ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く