2012-09-12 29 views
3

我有一個ARC項目設置在Xcode。該項目我添加了一個非弧靜態庫。一切工作,並建立發現。當我運行該項目時,出現此錯誤。Xcode無法識別選擇器到執行

終止應用程序由於未捕獲的異常 'NSInvalidArgumentException' 的,原因是: ' - [__ NSCFConstantString encodedURLParameterString]:無法識別的選擇發送到實例 0x4a030':

NSString * value = [params objectForKey:key]; 
[_params setObject:[value encodedURLParameterString] forKey:key]; 
從該代碼

試圖稱此爲

@implementation NSString (OAURLEncodingAdditions) 

- (NSString *)encodedURLParameterString { 
    NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, 
                      (CFStringRef)self, 
                      NULL, 
                      CFSTR(":/=,!$&'()*+;[]@#?"), 
                      kCFStringEncodingUTF8); 
    return [result autorelease]; 
} 

@end 

該錯誤似乎是說它無法找到此功能。當然,它編譯得很好,我可以跳到定義就好。字符串值是一個當然從NSString繼承的字符串。這在我從中拉出來的其他項目中工作得很好。它完美地發現了這個功能,所以作爲一個Xcode新手我在我的智慧結束。

該文件包含在編譯源中。沒有任何錯誤,它編譯和運行其他代碼就好了。我似乎錯過了一小部分,我不明白它是什麼。如果你可以幫忙請做。

回答

1
// file NSString+URLEncoding.m 
#import <Foundation/Foundation.h> 
@interface NSString (OAURLEncodingAdditions) 
- (NSString *)encodedURLParameterString; 
@end 

// file NSString+URLEncoding.h - this file is marked with -fno-objc-arc 
#import "NSString+URLEncoding.h" 
@implementation NSString (OAURLEncodingAdditions) 
- (NSString *)encodedURLParameterString { 
    NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, 
                      (CFStringRef)self, 
                      NULL, 
                      CFSTR(":/=,!$&'()*+;[]@#?"), 
                      kCFStringEncodingUTF8); 
    return [result autorelease]; 
} 
@end 

鑑於上面的代碼,該代碼應工作:

#import "NSString+URLEncoding.h" 
// ... 
NSString * value = @"xxxxx"; 
value = [value encodedURLParameterString]; 
+0

我沒有直接調用函數。我試圖導入這個,然後直接調用該函數,但它仍然給我同樣的錯誤。 – Kyle

+1

檢查包含方法encodedURLParameterString的文件的名稱。假設它是「NSString + URLEncoding.m」。然後轉到發生錯誤的文件,並在頂部寫入:'#import NSString + URLEncoding.h「'然後再試一次 – Jano

+0

這不起作用,我認爲它與使用非弧選擇器有關 – Kyle

相關問題