2

私の開発環境:

Xcode 4.6.2

非自動参照カウント

たとえば、 というビュー コントローラーがCertainViewControllerあり、 というNSArray *型指定されたプロパティlistDataが宣言されており、属性がretainおよびであるとしますnonatomiclistDataテーブルビューにロードされます。私は次のようにします:

// CertainViewController.h
@interface CertainViewController : UIViewController
{
}
@property (retain, nonatomic) NSArray *listData;

// CertainViewController.m
@implementation CertainViewController

@synthesize listData;

- (void) viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    
    // someValue is ready
    self.listData = someValue;
    // Release someValue
}

- (void) dealloc
{
    self.listData = nil;
}

_listData他の一部の開発者は、プロパティのインスタンス変数を明示的に指定し、次のlistDataようにします。

// CertainViewController.h
@interface CertainViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
{
    NSArray *_listData;
}

@property (retain, nonatomic) NSArray *listData;

// CertainViewController.m
@implementation CertainViewController

@synthesize listData = _listData;

- (void) viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    
    // someValue is ready
    self.listData = someValue;
    // Release someValue
}

- (void) dealloc
{
    [_listData release];
}

上記の 2 つの実装は完全に同等ですか? または、小さな違いはありますか?明示的にインスタンス変数を_listData使用することを意味します[_listData release];か?

どんなヒントでも大歓迎です。助けてくれてありがとう:D

4

2 に答える 2

2

基本的には同じですが、正確な違いを知りたい場合は、次のドキュメントを参照してください

于 2013-05-24T02:16:59.917 に答える