.-- --

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 comment(-) trackback(-)
.17 2012

ARCって…

こんにちわ、最近PSPのアナログがやばくなってきて困っているHAYABUSAです。

多忙なプロジェクトが一旦落ち着いたため、今後のコーディングスタイルの模索を兼ねて、今更ながらBlocks/GCD/ARCをちょっと研究してみました。
…というか更新忘れてましたw
覚え書き程度ですが、自分なりの考察を。(あくまで私的な見解ですのであしからず^^;)
[Blocks]
・Obj-Cというより、Cレベルでの追加仕様。
・ソース上に「^」とか異物が出てきて最初は吐き気をもよおす。
・ざっくり言うと、ただのコールバック関数。
・今まではコールバック関数を相手オブジェクトに渡す際は、関数ポインタとしてアドレス渡ししかできなかったけど、関数の処理ごっそりをそのまま「ブロック」という形で丸投げすることができる。
・ただし、あくまで書式レベルでの見た目上の話。実際はコンパイラ様がラップしてくれているだけ。
・この「書式レベルで」ということを念頭に置いておかないと、スタックのことを考えすぎて不安からパニックに陥る。(実際陥った)
・Delegateスタイルの設計の場合、モノによっては汚いプログラムとなってワケわかんなくなってしまうことがあったけど、Blocksスタイルだとスッキリ解決できそう。(例としては非同期通信後に、結果を非同期アラートで表示するような、非同期→非同期→…コンボのとき)
・GCDを使用する際には必須になってくる概念。
・フレームワークの既存クラスがどこまでこれに対応してくれるか今後に期待!(UIAlertViewあたりは早いとこ対応してほしい)

[GCD (Grand Central Dispatch)]
・並列処理をシステムにまかせて良きに計らってくる。
・マルチスレッド=曲者というイメージを払拭してくれそうな予感。
・NSThread/NSLockや、NSOperationといったマルチスレッドで使うようなめんどくさいクラスとは無縁になる(ハズ)。
・自分でスレッド建てて、排他して…とかいった一番面倒な処理に気を遣う必要がなくなって、本質の処理部分に集中できる。
・Blocksを併用するため、マルチスレッドなプログラムが何故か一関数内のスコープだけで完結してしまうこともある魔法の呪文。(パルプンテ?)
・スレッドを使うような機会がなかなかないのが逆に残念。(欲しくはないけど)

[ARC (Automatic Reference Counting)]
・Xcode4.2(LLVM Compiler 3.0)以上から使うことができる。
・メモリ管理までをコンパイラ様に押し付けて、人間がラクになる。
・ガベージみたいなものと思っていたが、コンパイラレベルの話なので全く異なる。
・retain/release(autorelease)/dealloc の概念を知らなくてもコードが書ける。(というか逆に知らない方がいい。。)
・しかし内部的な「参照カウンタ」というObj-C的変態概念は変わらない。人間が手動でやるかコンパイラ様が自動でやってくれるかの違い。
・参照カウンタの管理はコンパイラ様が勝手に判断してて、変数にオブジェクトを代入する「参照された」ときにインクリメントしてるっぽい。
・逆にデクリメントは変数にnilを入れたり、別のオブジェクトで上書きしたりとかで参照していたオブジェクトが「参照されなくなった」時点で-1してそう。
・イメージ的に@property宣言したオブジェクトに対して、プロパティ経由でオブジェクト(またはnil)を代入したときの感覚。
・@propertyのretain → strong、assign → weak。
・コンパイラ様は変数に「代入する」トリガで参照カウンタの管理しているため、retain/release(autorelease)を人間ごときが書いちゃうとエラーになるのは納得。
・上記理由からvoid*とのキャストが普通にできないことや、Cの構造体内にオブジェクトを含めることができないのも納得。
・けどやっぱりしっくり来ないw

勉強してみて思ったのは、敷居の高そうなイメージだったBlocksとGCDがすんなり受け入れることができたのに対し、意外にもARCの方が「う~ん」だったことです。
コードレベルではたしかにスッキリするものの、ソース上に「autorelease」が無くなるのは逆に落ち着かない…
ARCを使う以上、メモリ管理のことを気にしだすと負けです、きっと。

なんとなく、好きだった車がマイナーチェンジして、昔の方がよかった…と感じる瞬間に似てるかも。
角張ったデザインがよかったのにいちいち丸くしやがって!的な…w

@propertyの機構には感動さえ覚えたけど、ARCは…正直やり過ぎ感がハンパないっす。。

けどBlocksのコーディングスタイルについては積極的に使っていきたいな、と思った今日この頃です。
関連記事
スポンサーサイト

Comment

Post comment

  • comment
  • secret
  • 管理者にだけ表示を許可する

Trackback

trackbackURL:http://appteam.blog114.fc2.com/tb.php/218-73c87d90

ブログ内検索

関連リンク

製品情報

最新記事

カテゴリ

プロフィール

neoxneo



NEXT-SYSTEM iOS Developers Blog


  • UTO:
    カナダ版iPhone4Sは、マナーモードでシャッター音がならない…


  • Ehara:
    ...


  • Hayate:
    ...


  • Tasaki:
    Developer登録完了...したのはいいけど


  • Ueda:
    ...



リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。