3

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

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

“self.winnerImageURLs” NSMutableArray 中非常项目的类以 NSCFString 的形式返回,所以我不确定dealio 在这里。

关于我做错了什么的任何想法???

谢谢

4

2 回答 2

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 Developer 站点中的类集群:http: //developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html#//apple_ref/doc/uid/TP40002974-CH4-SW34

于 2010-05-18T05:27:14.327 回答
1

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

于 2010-05-18T09:44:48.547 回答