关于iPhone:NSMutablearray定义初始化问题

NSMutablearray define init issue

我有以下代码行

1
NSMutableArray *marray = [[NSArray arrayWithObjects: @"4", @"1", @"9", nil]mutableCopy];

,我想将其替换为以下行

1
NSMutableArray  *marray = [[NSMutableArray alloc]initWithArray:garr];

其中garr是来自全局方法

的全局数组

问题是代码在调用第一行时工作正常,但是在使用第二行时代码崩溃,感谢您的帮助和想法,感谢,知道第一个是NSArray但garr变量源是NSMutable数组
这是garr

的代码

1
2
3
     garr = [[NSMutableArray alloc]init];
    for (int x = 0; x < 10; x++) {
        [garr addObject:[NSNumber numberWithInt: arc4random()%200]];

这是错误消息
控制台错误:2012-09-02 14:46:42.976 sort_alg [1561:207]-[NSCFNumber UTF8String]:无法识别的选择器已发送到实例0x4b1a170 2012-09-02 14:46:42.978 sort_alg [1561:207] *正在终止应用程序由于未捕获的异常'NSInvalidArgumentException',原因:'-[NSCFNumber UTF8String]:无法识别的选择器发送到实例0x4b1a170'*第一次调用时调用堆栈:a <"

这是生成最终值的代码

1
2
3
4
5
6
7
8
NSString *element;
NSEnumerator *iterator = [marray objectEnumerator];
while ((element = [iterator nextObject]) != nil)
printf("%s", [element UTF8String]);
printf("\
"
);
[marray release];   // array needs to be released!
[pool release];

谢谢


问题出在printf("%s", [element UTF8String]);

NSNumber没有UTF8String方法,只有stringValue。您也不能printf,但是可以NSLog("%@", [element stringValue])NSLog("%d", [element intValue])(如果您知道它是整数)。