如何在一个类中设置一个数组与另一个类中的另一个数组

发布于 2024-08-27 06:19:19 字数 829 浏览 3 评论 0原文

我已经在一个类中用这样的数据填充和数组...

PowerClass.h 

NSMutableArray pickerArray;
@property (nonatomic, retain) NSMutableArray pickerArray;

-

PowerClass.m

@synthesize pickerArray;

@implementation
NSMutableArray *array = [[NSArray alloc] initWithObjects:@"stef", @"steve", @"baddamans", @"jonny", nil];
pickerArray = [NSMutableArray arrayWithArray:array];

我试图在另一个类中设置数组,

WeekClass.h

PowerClass          *powerClass;
NSMutableArray  *pickerData;

@property (nonatomic, retain) NSMutableArray pickerData;
@property (nonatomic, retain) PowerClass *powerClass;

WeekClass.m

@implementation
pickerData = [NSMutableArray arrayWithArray:powerClass.pickerArray];

但没有错误或警告。它只是崩溃了。 NSLog 表明 powerClass.pickerArray 为 NULL。

请帮助我指出正确的方向。

I've populated and array with data like this in one class...

PowerClass.h 

NSMutableArray pickerArray;
@property (nonatomic, retain) NSMutableArray pickerArray;

-

PowerClass.m

@synthesize pickerArray;

@implementation
NSMutableArray *array = [[NSArray alloc] initWithObjects:@"stef", @"steve", @"baddamans", @"jonny", nil];
pickerArray = [NSMutableArray arrayWithArray:array];

And I'm trying to set the Array in another class

WeekClass.h

PowerClass          *powerClass;
NSMutableArray  *pickerData;

@property (nonatomic, retain) NSMutableArray pickerData;
@property (nonatomic, retain) PowerClass *powerClass;

WeekClass.m

@implementation
pickerData = [NSMutableArray arrayWithArray:powerClass.pickerArray];

I have no errors or warnings. It just crashes. The NSLog says that the powerClass.pickerArray is NULL.

Please help point me in the right direction.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月亮是我掰弯的 2024-09-03 06:19:19

内存管理!

您已经设置了 pickerArray = [NSMutableArray arrayWithArray:array]; ,这是一个自动释放的对象。当你稍后要求 pickerArray 时,它已经消失了!

解决方案是使用@synthesized 访问器。而不是:

pickerArray = [NSMutableArray arrayWithArray:array];

...使用以下之一:

[self setPickerArray:[NSMutableArray arrayWithArray:array]];
self.pickerArray = [NSMutableArray arrayWithArray:array];
//These two are exactly equivalent, but are both very different from what you have now.

这样,您的属性将为您处理内存管理。

Memory management!

You've set pickerArray = [NSMutableArray arrayWithArray:array];, which is an autoreleased object. By the time you ask for pickerArray later, it's disappeared!

The solution is to use the @synthesized accessors. Instead of:

pickerArray = [NSMutableArray arrayWithArray:array];

... use one of the following:

[self setPickerArray:[NSMutableArray arrayWithArray:array]];
self.pickerArray = [NSMutableArray arrayWithArray:array];
//These two are exactly equivalent, but are both very different from what you have now.

This way, your property will handle memory management for you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文