#import <Foundation/Foundation.h> @interface Person : NSObject @property NSString * name; @end
这样就直接能使用p.name了。好像不需要如下定义:
#import <Foundation/Foundation.h> @interface Person : NSObject{ NSString* _name; } @property NSString * name; @end
这两种方式有啥区别呢?
ringa_lee
私の経験から、変数メモリの操作方法を明確に区別できるように、プロパティを使用してすべての名前を定義することをお勧めします (マルチスレッドはまれなので無視できます)。そして、私にとって、これはグローバル変数を識別する最も簡単な方法の 1 つであり、m ファイル内で _name を直接使用すると、これがグローバル変数であることがすぐにわかります。プロパティをグローバル変数として使用するのは非常に良い習慣だと思います。さらに、ここで @freewolf が言及した Syntheticsize は、実際には省略できます。ここでは例として単純なセッターを示します。
リーリー
私の経験から、変数メモリの操作方法を明確に区別できるように、プロパティを使用してすべての名前を定義することをお勧めします (マルチスレッドはまれなので無視できます)。そして、私にとって、これはグローバル変数を識別する最も簡単な方法の 1 つであり、m ファイル内で _name を直接使用すると、これがグローバル変数であることがすぐにわかります。プロパティをグローバル変数として使用するのは非常に良い習慣だと思います。さらに、ここで @freewolf が言及した Syntheticsize は、実際には省略できます。ここでは例として単純なセッターを示します。
リーリー リーリーリーリー