可以请人给我解释一下下面的代码片段之间的差异来填充myStrings阵列:灌装NSMutableArray的Objective-C的
NSString *match = @"ad*.png";
NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];
NSFileManager *fm = [NSFileManager defaultManager];
NSArray *dirContents = [fm contentsOfDirectoryAtPath:bundleRoot error:nil];
NSPredicate *fltr = [NSPredicate predicateWithFormat:@"SELF like %@", match];
NSArray *onlyPNGs = [dirContents filteredArrayUsingPredicate:fltr];
myStrings = [NSMutableArray array];
for(int i=0;i<[onlyPNGs count];i++)
{
[myStrings addObject:(NSString *)[onlyPNGs objectAtIndex:i]];
}
NSLog([myStrings description]);
当我填写我的数组这种方式,构造后,myStrings成为空莫名其妙,但而不是填充过滤器,如果我手动添加项目everythings罚款:
[myStrings addObject:@"adburgerking1.png"];
[myStrings addObject:@"adburgerking2.png"];
[myStrings addObject:@"adburgerking3.png"];
[myStrings addObject:@"addominos1.png"];
[myStrings addObject:@"admcdonalds1.png"];
[myStrings addObject:@"admcdonalds2.png"];
[myStrings addObject:@"admcdonalds3.png"];
[myStrings addObject:@"admeshuriskender1.png"];
[myStrings addObject:@"adquickchina1.png"];
[myStrings addObject:@"adsencam1.png"];
[myStrings addObject:@"adsultanahmetkoftecisi1.png"];
在此先感谢!
出于好奇,什么样的变量是'myStrings'?它只是一个普通的伊娃,还是它的财产?如果它是一个财产,你使用ARC?如果您使用的是ARC,请确保属性类型是STRONG或COPY,否则它将被释放并且无效。 – Malaxeur 2012-04-07 07:57:41
即时通讯编程相当新,但即时通讯尝试将文件名称存储为NSString *。在头文件中: @property(nonatomic,retain)NSMutableArray * myStrings; – dramaticlook 2012-04-07 09:17:52
你可能有一个局部变量,也称为'myStrings',它隐藏了实例变量? – 2012-04-07 09:33:16