6

私はObjectiveCとiOSにまったく慣れておらず、現在iOS6SDKを使用してアプリ開発を学ぼうとしています。頭を悩ませることができない概念の1つは、.mファイルでアクセスするときの「_variable」と「self.variable」の違いです。彼らは同じですか?または違う?

以下は簡単なサンプルです

MyClass.h

#import <Foundation/Foundation.h>

@interface MyClass : NSObject
@property (strong, nonatomic) NSString *myName;
@end

MyClass.m

#import "MyClass.h"

@interface MyClass ()
@property (nonatomic, strong) NSString *anotherName; 
@end

@implementation MyClass
- (void) myFunction {
    _myName = @"Ares";
    self.myName = @"Ares";

    _anotherName = @"Michael";
    self.anotherName = @"Michael";
}
@end

では、変数を設定するための上記の実装に違いはありますか?変数「myName」はパブリックで、「anotherName」はプライベートです。

入力をいただければ幸いです。ありがとう!

4

1 に答える 1

15

違いは次のとおりです。

の変数名_はインスタンス変数です。

self.variableオブジェクトでgetterメソッドを呼び出しています。

この例では、インスタンス変数が自動的に生成され、プロパティを合成する必要もありません。

ARCを使用していない場合、例の真の重要な違いが関係します-

self.variableretainプロパティをメモリ管理でマークするか、strong _variableメモリ管理にまったく対応しない場合、オブジェクトは保持されます

于 2013-02-28T07:30:40.750 に答える