迭代NSMutableArray时出现“超出范围”错误

时间:2010-05-18 01:42:00

标签: iphone objective-c xcode iphone-sdk-3.0 class-cluster

为什么每次尝试访问此循环中的“url”变量时都会出现“超出范围”错误?

for(NSString *url in self.winnerImageURLs) {
        [mediaItemString appendFormat:@"{\"type\":\"image\",\"src\":\"%@\",\"href\":\"%@\"},", url, url];
    }

“self.winnerImageURLs”NSMutableArray中的非常项目的类别以NSCFString的形式返回,所以我不确定这里的处理是什么。

关于我做错的任何想法???

由于

2 个答案:

答案 0 :(得分:1)

简称,它应该是那样的。更长的答案是NSString是一个类群。

班级群组

  

类集群是一种体系结构   那些私人团体,   公共领域的具体子类,   抽象的超类。分组   以这种方式提供的课程   简化了用户界面,谁   只看到公开可见   建筑。在幕后,   但是,抽象类正在调用   最适合的私有子类   执行特定任务。

许多常见的Cocoa类都是作为类群实现的,包括NSArrayNSStringNSDictionary

您可以像创建任何其他类一样创建群集实例并与之交互。但是,在幕后,当您创建公共类的实例时,该类将根据您调用的创建方法返回相应子类的对象。 (您不能,也不能选择实例的实际类。)

NSString示例

NSString *a = @"UTF32.txt";

NSString *b = [NSHomeDirectory() stringByAppendingPathComponent:a];

NSTextStorage *storage = [[NSTextStorage alloc] initWithString:b];

NSString *c = [storage string];

a,b和c中的每一个都可以(并且在10.5中)是不同私有子类的实例(事实上,在Mac OS X v10.5中,每个都是)。虽然每个对象都是NSString的私有子类,但将每个对象视为NSString类的实例很方便。

关于Apple开发人员网站中的类群集http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html#//apple_ref/doc/uid/TP40002974-CH4-SW34

答案 1 :(得分:1)

如果您正在讨论在调试器中访问url变量,那么它会发生很多。这本身并不是问题。