私は NSViewController サブクラスを持っています:
@property (retain) NSMutableArray* entities;
@property (retain) NSMutableArray* tiles;
私の-init
方法では、両方の配列が で作成され+new
、それぞれに 1 つのオブジェクトが与えられます。その後、 を呼び出すとNSLog(@"%@, %@", entities, tiles);
、期待どおりの結果が得られます。
2012-12-30 15:07:04.160 Project Land III[2177:303] (
"<RBEntity: 0x100508170>"
), (
"<RBTile: 0x100508470>"
)
ただし、同じログ関数を呼び出すビューのボタンをクリックすると、次のように吐き出されます。
2012-12-30 15:07:06.071 Project Land III[2177:303] (null), (null)
私は何日もの間、何らかの形でこの問題に悩まされてきました。なぜ世界で配列がnullなのですか?
もっと多くのコードを投稿できることをうれしく思います。お知らせください!
インターフェース:
#import <Cocoa/Cocoa.h>
#import "RBEntity.h"
#import "RBTile.h"
@interface RBMainViewController : NSViewController {
NSMutableArray* _entities;
NSMutableArray* _tiles;
}
@property (retain) NSMutableArray* entities;
@property (retain) NSMutableArray* tiles;
- (IBAction)log:(id)sender;
@end
私の-init
方法:
- (id)init {
self = [super init];
self.entities = [NSMutableArray new];
self.tiles = [NSMutableArray new];
[self.entities addObject:[RBEntity entityWithLocation:NSMakePoint(4, 5) type:FACEEATER]];
[self.tiles addObject:[RBTile tileWithLocation:NSMakePoint(10, 2) type:GRASS]];
NSLog(@"%@, %@", self.entities, self.tiles);
return self;
}