Objective-C 2.0のプロパティで再びはまる

公開日: : 最終更新日:2010/01/09 iPhone, ,

Objective-C 2.0のプロパティに関してはまったことがあり、これはちょっと詳しく知っておく必要があるなと思い、詳解Objective-C 2.0を購入して辞書的に使っている。
そして昨日再びプロパティではまったので参照。

プロパティにオブジェクトを指定する場合、assign, retain, copy のどれかを指定することを再び学ぶ(P.294)。

そのあたりは大体知っていたのだが、今回は Get しかしないので、 readonly を指定したところ、それではオブジェクトは生成されないことを知った。
詳解Objective-C 2.0には明示的には書かれていないのだが、assign, retain, copy の説明を読むとそう判断することができる。(セッタ用コードが自動で生成されないため)
自分みたいにはまる人が他にもいるかも知れないので、readonly の時の話も書いてもらうと良いかも知れない。

Objective-C 2.0のプロパティはオブジェクトのカウンタ管理とからんでいて結構複雑なので、よく理解してから使った方がよいと思われる。

ところで、詳解Objective-C 2.0のP295の「(d) copyを指定した場合のセッタの定義」は、[name release] が書かれているが、copy の場合は必要ないのではないだろうか。★ソフトバンククリエイティブのページを見てみたが、正誤表は見つからなかった。

木下さんのダイナミックObjective-C 104回めを見てもやはり必要なさそうだが。確認が必要。

しかしObjective-C 2.0のプロパティは個人的に結構難しい。@property, @synthesizeから生成されるコードがいまいち想像できないし、オプションで挙動も大きく変わってしまうので初心者は使わない方がよいように思われる。

実際、iPhone Cool Projectsの2章でも、「自分はプロパティは使わない」と書いている著者がいた。同じようにはまった経験があるのではないだろうか。

ちなみにiPhone Cool Projectsはとてもおもしろい。読み終わったら紹介したい。

追伸

★の件だが、紹介Objective-Cの著者の方にメールしてみたところ、非常に丁寧な回答が返ってきて、自分が間違っていることが分かった。
Appleのドキュメントによると、copy の場合もrelease が必要になる。
value に入っていたオブジェクトを release しておかないと、メモリリークになってしまうとのこと。
木下さんにも確認してみたところそれが正しいことが分かり、ダイナミックObjective-C 104回目の記述は修正されることになった。
こうやって著者の方々とやりとりができるのは本当にありがたい。2人とも非常に丁寧で、人柄が伝わってきた。
ありがとうございました。

詳解 Objective-C 2.0
詳解 Objective-C 2.0
ソフトバンククリエイティブ 2008-05-28
売り上げランキング : 3048

おすすめ平均 star
star参考書としておすすめ
starとにかく分かりにくい。
star入門書より強化教材

Amazonで詳しく見る by G-Tools

さらに追伸
自分のクラスのプロパティにアクセスする場合、self.age = 10; のようにselfをつけないと、アクセサメソッドは呼ばれない。
これは Apple のドキュメントの、Objective-C 2.0 プログラミング言語 の Dot Syntax で説明されているが、わかりづらいので注意。
一時期かなりはまっていた。

関連記事

ブログネタメモ

書きたいことがいろいろあるのだが書けていない。そのうちに忘れてしまうので、メモしておく。 使

記事を読む

Photoshop のバッチ処理でiOSアプリアイコンを一括作成する

毎回苦労しているiOSのアプリアイコン作成。今回はPhotoshopのバッチで作成してみる。前回は 

記事を読む

no image

iPhoneゲーム開発ワークショップ 翔泳社 PJ Cabrera

以前紹介した、iPhone Games Projects の翻訳本「iPhoneゲーム開発ワークショ

記事を読む

Becoming Steve Jobs

これまでに読んだ Steve Jobs本では一番よかったと Amazon に書いている人がいたが、同

記事を読む

no image

セブンイレブンでiPhoneから写真プリント

今は事前登録なしにセブンイレブンでiPhoneからプリントが行えるけれども、店の人もわかって

記事を読む

no image

マイコミムック 電子出版 スタートアップガイド

モリサワのMCBookの広告から始まる本。本業としている人には普通の本なんだろうけど門外漢から見ると

記事を読む

Everio で撮影した動画を写真袋で公開する

年末に奥さんが Victor Everio GZ-HM670 で撮影した長女のバレエ動画を写真袋で

記事を読む

LogLocations 1.3.2 をリリースしました

LogLocations 1.3.2をリリースしました。審査後、近日中に公開されます。下記のレビュー

記事を読む

no image

[英単語学習法] MyShortcuts を使って通知センターからいろいろな辞書を引いてみる

MyShortcuts+Viewer 価格: ¥100

記事を読む

Apple Watch用バッテリーロガーを公開しました

1年前に開発し、App StoreにSubmitしたものの Rejectされ続けていたアプリをその

記事を読む

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Ember Mug 2のACアダプタをUSB Type-Cに変えてみた

冬になると活躍する Ember Mug 2 の充電器は付属のACアダ

Wi-Fi6Eルータ TP-Link AXE5400購入

Wi-Fi6E を試してみたくなり、TP-Link AXE5

児童手当 認定請求書申請 2024 「請求者が養育をする18歳に達する日以降の最初の3月31日までの子の数」とは?

2024年に受給していない人には手紙が届くらしい。 電子申請も

Vision Proアプリ開発本 8/24、8/26に発売

Vision Proアプリ開発入門 P400が 8/24 に発売、V

Developer Strap が日本でも購入可能に

USアカウントでしか購入できなかった Vision Pro 用 De

→もっと見る

PAGE TOP ↑