0

これはばかげた質問のように聞こえることはわかっています。多くの人が、プロパティがどのように機能するかについてアップルのドキュメントを読む必要があると言い始め、同様の問題をグーグルで検索し、これを重複として閉じるなどと言い始めます...いくつか検索しました、アップルのドキュメントを読んでみましたが、コードの何が問題なのかまだわかりません。

次のように、PrefMySpotsViewCtrl クラスのそれぞれの .h および .m で定義された NSMutable 配列があります。

NSMutableArray *mySpotsArray;

@property (nonatomic, retain) NSMutableArray *mySpotsArray;

@synthesize mySpotsArray;

この配列を同じクラスから NSLog すると、次のようになります。

NSLog(@"in class: %@", mySpotsArray);

すべてうまくいきます。次のような別のクラスからこの配列を NSLog しようとしています:

PrefMySpotsViewCtrl *PrefMS = [[PrefMySpotsViewCtrl alloc] init];
NSLog(@"%@", [PrefMS mySpotsArray]);

空として表示されます。

私は何を間違っていますか?

ありがとうございました。

編集 ...

次のように配列を初期化します。

- (id)init
{
self = [super init];
if (self)
{
    mySpotsArray = [[NSMutableArray alloc]init];
}

return self;
}

次のようにオブジェクトを追加、削除します。

/-----------------------------------------
- (IBAction)addSpot:(id)sender
{
[mySpotsArray addObject:[[MySpots alloc]init]];
[mySpotsTable reloadData];

[self saveMySpots];
}




//-----------------------------------------
- (IBAction)deleteSpot:(id)sender
{
NSInteger row = [mySpotsTable selectedRow];
[mySpotsTable abortEditing];
if (row !=-1)
{
    [mySpotsArray removeObjectAtIndex: row];
}

[mySpotsTable reloadData];

[self saveMySpots];
 }
4

1 に答える 1

2

これ...

PrefMySpotsViewCtrl *PrefMS = [[PrefMySpotsViewCtrl alloc] init];

...新しいオブジェクトを作成します。MySpots何かが呼び出されるまで、その配列にはオブジェクトがありませんaddSpot:。配列内にPrefMySpotsViewCtrlのオブジェクトがある可能性があるという事実は、作成したばかりのものには影響しません。MySpots

于 2012-09-19T16:52:07.733 に答える