是什么 - [NSURL _fastCharacterContents] :? [英] What Is -[NSURL _fastCharacterContents]:?

查看:835
本文介绍了是什么 - [NSURL _fastCharacterContents] :?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我在一个方法中调用它:

So I'm calling this in a method:

-(id)initWithContentURL:(NSString *)url {
if (self = [super init]) {
    NSLog(@"xSheetMusicViewController - %@",url);
    // Casting an NSString object pointer to a CFStringRef:
    CFStringRef cfString = (CFStringRef)url;        
    CFURLRef pdfURL = CFBundleCopyResourceURL(CFBundleGetMainBundle(), cfString, NULL, NULL);
    pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL);
    }
    return self;
}

哪一个在NSLog的标记为

Which crashes right at the NSLog at the line marked:

CFURLRef pdfURL = CFBundleCopyResourceURL(CFBundleGetMainBundle(), cfString, NULL, NULL);

我从未见过这个奇妙的小错误。这是崩溃日志:

with this wonderful little error I've never seen before. Here's the crash log:

SheetMuse[83550:b603] -[NSURL _fastCharacterContents]: unrecognized selector sent to instance 0x4ec35f0
2011-09-22 17:36:22.921 SheetMuse[83550:b603] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSURL _fastCharacterContents]: unrecognized selector sent to instance 0x4ec35f0'
*** Call stack at first throw:
(
0   CoreFoundation                      0x011be5a9 __exceptionPreprocess + 185
1   libobjc.A.dylib                     0x01312313 objc_exception_throw + 44
2   CoreFoundation                      0x011c00bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3   CoreFoundation                      0x0112f966 ___forwarding___ + 966
4   CoreFoundation                      0x0112f522 _CF_forwarding_prep_0 + 50
5   CoreFoundation                      0x010d2857 CFStringGetCharactersPtr + 135
6   CoreFoundation                      0x010d6c93 CFStringGetFileSystemRepresentation + 35
7   CoreFoundation                      0x01110811 _CFFindBundleResources + 289
8   CoreFoundation                      0x0110d961 CFBundleCopyResourceURL + 305
9   SheetMuse                           0x00005b19 -[xSheetMusicViewController initWithContentURL:] + 153
10  SheetMuse                           0x00009724 -[ExamplesViewController tableView:didSelectRowAtIndexPath:] + 708
11  UIKit                               0x00487b68 -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 1140
12  UIKit                               0x0047db05 -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 219
13  Foundation                          0x00b9779e __NSFireDelayedPerform + 441
14  CoreFoundation                      0x0119f8c3 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 19
15  CoreFoundation                      0x011a0e74 __CFRunLoopDoTimer + 1220
16  CoreFoundation                      0x010fd2c9 __CFRunLoopRun + 1817
17  CoreFoundation                      0x010fc840 CFRunLoopRunSpecific + 208
18  CoreFoundation                      0x010fc761 CFRunLoopRunInMode + 97
19  GraphicsServices                    0x028a31c4 GSEventRunModal + 217
20  GraphicsServices                    0x028a3289 GSEventRun + 115
21  UIKit                               0x0041ec93 UIApplicationMain + 1160
22  SheetMuse                           0x000028a9 main + 121
23  SheetMuse                           0x00002825 start + 53
)
terminate called throwing an exceptionsharedlibrary apply-load-rules all

那么,这个错误是什么,我该如何解决?

So, what is this error, and how do I fix it?

编辑:这个问题已经解决了。谢谢大家的回答,我正试着弄清楚我的脑袋。如果你愿意,我可以在应用程序中提及你,看到我想在几周内发布它,你的帮助已经解决了代码中最大的错误。再次感谢你!

This question has been solved. Thank you everyone who answered, I was banging my head on the wall trying to figure this out. If you would like, I can give you a mention in the app, seeing as I would like to release it in a few weeks, and your help has ironed out the biggest bug in the code. Again THANK YOU!

推荐答案

-_ fastCharacterContents:是一种私人方法的NSString 。您收到的错误表明相应的消息正在发送到 NSURL 实例,因此崩溃。它看起来像传递给 -initWithContentURL的 url 参数: NSURL ,而不是 NSString

-_fastCharacterContents: is a private method of NSString. The error you get indicates that the corresponding message was being sent to an NSURL instance, hence the crash. It looks like the url parameter that’s being passed to -initWithContentURL: is an NSURL, not an NSString.

配售

NSLog(@"url is of type %@", [url class]);

方法开头的

应该告诉你 url <的确切类别/ code>。

at the beginning of the method should tell you the exact class of url.

我建议您将方法签名更改为:

I suggest you change your method signature to:

- (void)initWithContentPath:(NSString *)path

为了使它成为可能清除该方法需要一个表示(相对)路径的字符串。 Cocoa Touch中还有其他类声明 -initWithContentURL:以接收 NSURL * 参数。

in order to make it clear that the method expects a string representing a (relative) path. There are other classes in Cocoa Touch that declare  -initWithContentURL: to receive an NSURL * argument.

这篇关于是什么 - [NSURL _fastCharacterContents] :?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆