半年までは、Objective-Cでコールバックの処理は、delegateを使って実装していました。しかし、delegateによるコールバックは処理の繋がりが分かりにくいというデメリットがあります。 これは皆さん感じるところだと思いますが、実際に最近のObjective-C開発は、Blocksを使って記述するのがトレンドだと思います。 ただ、メモリ管理に関して少し注意しなければならない点があるので、検証結果も合わせて記していきたいと思います。(少し長くなるので2回にわけて書きたいと思います。) Blocksで処理を行う これは簡単なサンプルです。BlocksRunnerクラスは、Blocksで渡された処理を保持し、runメソッドが呼ばれた時にその処理を実行します。 int main(int argc, const char * argv[]) { @autoreleasepool { Bl
I am extremely confident that Apple will introduce the ability to set blocks as actions for UIActionSheet (and UIAlertView) in iOS 6. Still, for exercise and because I want to support iOS 5 until iOS 6 is actually released, I set out to implement that. When I tweeted about it, several people pointed me to existing implementations: Gustavo Ambrozio’s BlockAlertsAnd-ActionSheets Zachary Waldowski’s
iOS 4から使えるようになったBlocksは、余計なことを気にせず気軽に使えるとてもよい拡張機能で、僕も便利にガンガン使わせてもらっています。 ただ、表向きは親切なのですが、裏側の実装は変態的なことになっており、それを理解するまで疑問に思うことや不安を感じることが多々ありました。 というわけで、自分の復習もかねて、Blocksに関して色々調べた結果をここにまとめておきます。随時追記予定&つっこみ歓迎です。 Blockの正体は構造体 下記のようにBlock変数 myblock を定義したあとでブレークさせると、XcodeのVariables Viewでその中身を見ることができます。 「myblock = (struct __block_literal_1 *) 0xbfffd490」ということなので、myblock は __block_literal_1 という型の構造体のポインタ変数で、
//0.下はいじらない Tags:&tags() //1.以下に続けてADCでの分類を書き込みリンクする。「ガイド小見出し(日本語名)」、まで書く &link_toppage(トップ) > [[ガイド>Guides]] > ブロックプログラミング概論 //前後のページへのリンクをはる。ページ最下部にも同じものがあるので忘れずにリンクする [[前のページ>]] [[次のページ>]] *ブロックと変数 [[翻訳元>http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Blocks/Articles/bxVariables.html#//apple_ref/doc/uid/TP40007502-CH6-SW1]] この記事ではブロックと変数間の内部的な働きをメモリ管理も含めて説明します。 //3.翻訳元の最終
最近、CCSendMessageという素晴らしく 便利なクラスを発見したので紹介します。 元記事 そもそもなぜこれがここに来て登場したかというと、 CCCallFuncを使って、 アクションの最後に何かしたいとか、 複数の引数をセレクタに渡して何かしたいとか、 意外と融通が利かないことが多いです。 というか何より、selfとセレクタ渡すのがめんどくさい!! これは私も思ってました。 CCSendMessageはそれを解決してくれます。 CCSendMessageの使い方は、非常に簡単です。 例えば、CCSpriteのオブジェクトをアクションの後に消去したいときを考えて見ましょう。 CCCallFuncならこのように記述するでしょう。 @interface CCSprite2 : CCSprite { @end @implementation CCSprite2 - (void) remov
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く