Help us understand the problem. What is going on with this article?

Modern Objective-Cでのシンプルなプロパティ記述方式

More than 5 years have passed since last update.

今月からようやくModern Objective-Cに着手(かなり今さらだけど・・)
記述がかなりシンプルだとは聞いていて、情報もたくさん挙がっていたのだけど、困惑したのでメモ。メンバー変数とか@synthesizeとか宣言不要でコードがスッキリして嬉しい。基本的には@propertyだけ宣言すれば良いみたい。また@properyもいままでヘッダファイルでのみ宣言していたけど、プライベートなものは実装ファイルの無名カテゴリ内に宣言すればよいみたい(パブリックプロパティは従来通りヘッダファイルに記述)。以下、プライベートプロパティを宣言する時の例。

Modern Objective-cのプロパティ記述

一応、メンバー変数とか本当に定義されているのか確認。

Modern Objective-cのプロパティ記述の確認

もう"Legacy" Objective-Cでは書けないな。

参考サイト

参考にさせていただいたサイトです。

歴史的には、インターフェイスにはクラスのインスタンス変数宣言が必要でした。(中略)インスタンス変数は実装詳細であり、通常、クラス自身の外からアクセスされることはありません。さらに、実装ブロック内に宣言すること、あるいは宣言済みプロパティから自動生成させることも可能です。したがって通常は、インスタンス変数宣言をパブリックインターフェイスで行うべきではないので、波括弧も省略してください。

公式ドキュメントです。いままでインターフェイスで宣言してました。公式で実装ブロック内での宣言やプロパティでの自動生成でも可能で、括弧も省略してよいみたい。

コンパイラが@synthesizeを補完してくれる様になったため、基本的な状況では、@synthesizeを書かなくてよくなりました。また、synthesizeされる相手>のivarも、同名の変数ではなくて、アンダーバーを最初に付けた物がデフォルトとなります。これまで議論されて来たことがappleのコンパイラによって、これ>からは定義されているため、安心ですね。ちなみに、これは以前からですが、(strong)というのも,デフォルトがstrongなので、書かなくてよくなりました。

1.プロパティに対応するインスタンス変数はヘッダファイルで宣言する必要はまずない。(iOSのバージョンに関係なく)
2.プロパティに対応するインスタンス変数はsynthesizeで常に別名をつけるべき。
3.インスタンス変数名はプロパティ名の前に_をつけたものにする。
4.インスタンス変数にアクセスするときは、クラス内からでも常にアクセッサメソッドを通して行うようにする。(setter/getter内やinit, dealloc以外)

参照 : Modern Objective-Cでのプロパティ記述

追記1 : 文章の補足と参考サイトを追加しました。

KUMAN
エンジニアやってます。アプリ、インフラ、サーバーサイドあたりのネタをちょこちょこと。。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした