我有一个愚蠢的怀疑,但我需要正确理解它。我已经提到了几篇关于此的帖子,但它们仍然让我感到困惑。
我有一个数组,它由解析xml得到的一组url组成,我存储了这样的数组:
Parser.m
else if([elementName isEqualToString:@"image"]){
self.img.imageUrl = self.currentElement;
[[self URL_array]addObject:img.imageUrl];
}
如果我记录内容,它会给出如下内容:
the URL ARRAY IS --------------------->>>>(
"http://www.bedfordevents.co.uk/images/stories/template/GallerySlideshow/b10.jpg\n",
"http://www.bedfordevents.co.uk/images/stories/template/GallerySlideshow/b11.jpg\n",
"http://www.bedfordevents.co.uk/images/stories/template/GallerySlideshow/b12.jpg\n",
"http://www.bedfordevents.co.uk/images/stories/template/GallerySlideshow/b13.jpg\n",
我需要将此数组传递给另一个类/视图控制器,我在Parser.m文件中一直这样做
ViewController *control = [[ViewController alloc]init];
control.image_array = URL_array;
视图控制器有一个数组image_array
我在ViewController.m中像这样调用
NSLog(@"array is----->>%@ ",self.image_array);
但是image_array
返回null;
我相信我在某处做错了,有人能指出我的错误并帮助我吗?
谢谢。
修改
代码已更新。 现在我在ViewController中有一个方法,如上所述
-(void)updateImageArray:(NSMutableArray *)imageArray{
self.image_array = [NSMutableArray arrayWithArray:imageArray];
NSLog(@"array is in here-------->>>>%@",self.image_array);
}
并致电
[control updateImageArray:URL_array];
在我的Parser.m中,数组显示在ViewController.m中的日志及其工作
谢谢
答案 0 :(得分:0)
这取决于control.image_array
属性的模式。因此,如果它的分配,则数组的引用计数不会增加,并且如果源上下文(Parser.m)释放他,则可能会释放。所以在ViewController的界面中它应该是
@property(retain, nonatomic)NSArray* image_array
或者如果您使用ARC:
@property(strong, nonatomic)NSArray* image_array
答案 1 :(得分:0)
根据您的描述,我认为您在parser.m中创建ViewController的对象,并尝试使用ViewController的另一个对象log NSLog(@"array is----->>%@ ",self.image_array)
,其中image数组的值为nil。(尝试记录self,controller两者都不同。)
如果你来自parser.m log NSLog(@"array is----->>%@ ", control.image_array)
它将起作用。
如果你需要在ViewController.m上记录它,你可以使用委托方法或将ViewController的对象(即控件)从parser.m传递给ViewController.m,为此可以使用外部变量。
答案 2 :(得分:0)
根据您在评论中所写的内容,似乎在设置image_array之前调用了viewDidLoad
。
您可以添加方法[control updateImageArray:URL_array]
,然后在此方法集self.image_array = [NSArray arrayWithArray:URL_array];
内添加并根据需要刷新UI
答案 3 :(得分:0)
您必须在ViewController中覆盖image_array的getter方法。 通过记忆前景,这将是很好的。
在ViewControler.m中
@synthesize image_array = _image_array;
-(NSMutableArray *)image_array {
if(_image_array == nil) {
_image_array = [[NSMutableArray alloc]initWithCapacity:0];
}
return _image_array;
}
然后执行此操作
[control setImage_array:URL_array];
虽然您可以执行[control setImage_array:URL_array];