2

MultipeerGroupChat の Apple サンプル アプリケーション (具体的には MainViewController.m) を見ると、次のようになります。

https://developer.apple.com/library/ios/samplecode/MultipeerGroupChat/Listings/AdhocGroupChat_MainViewController_m.html#//apple_ref/doc/uid/DTS40013691-AdhocGroupChat_MainViewController_m-DontLinkElementID_8

この例には、プロパティを割り当てる以下のコードが含まれています。

@property (retain, nonatomic) NSMutableArray *transcripts;
@property (retain, nonatomic) NSMutableDictionary *imageNameIndex;

次に、viewDidLoad でそれらを初期化します。

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Init transcripts array to use as table view data source
    _transcripts = [NSMutableArray new];
    _imageNameIndex = [NSMutableDictionary new];

    ---SNIP---

ivar _transcripts と _imageNameIndex に直接割り当てている理由はありますか? init メソッドを使用していない限り、常にプロパティを使用して変数にアクセスすることが適切な規則であると考えました...実際、viewDidLoad メソッドのもう少し先で、作成者はプロパティを使用して他の変数を割り当てます。

self.displayName = [defaults objectForKey:kNSDefaultDisplayName];

self.serviceType = [defaults objectForKey:kNSDefaultServiceType];

Apple のサンプル コードは、過去に適切なコーディング手法から逸脱することがあったことを知っています。そのため、これは単にずさんなコーディングなのか、それとも非初期化メソッドでこれら 2 つの ivar に直接アクセスする正当な理由があるのか​​ 疑問に思っています。

4

1 に答える 1