Iphone dyld:未找到符号:如何解决此问题时出错
我有以下代码(如下所示),其中我使用Iphone dyld:未找到符号:如何解决此问题时出错,iphone,objective-c,xcode,linker-errors,Iphone,Objective C,Xcode,Linker Errors,我有以下代码(如下所示),其中我使用NSURLConnection连接和解析响应字符串。但我得到了以下错误: dyld: Symbol not found: _CFXMLNodeGetInfoPtr Referenced from: /System/Library/Frameworks/Security.framework/Versions/A/Security Expected in: /Developer/Platforms/iPhoneSimulator.platform/Deve
NSURLConnection
连接和解析响应字符串。但我得到了以下错误:
dyld: Symbol not found: _CFXMLNodeGetInfoPtr
Referenced from: /System/Library/Frameworks/Security.framework/Versions/A/Security
Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation
in /System/Library/Frameworks/Security.framework/Versions/A/Security
我已经在这方面工作了很长时间,但没有能够修复此错误
我已经导入了json.h和ASIHTTPRequest.h,所有这些文件,但是,它还没有修复错误
@implementation Websample1ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
dataWebService = [[NSMutableData data] retain];
NSMutableURLRequest *request = [[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://www.googleapis.com/customsearch/v1?key=AIzaSyDzl0Ozijg2C47iYfKgBWWkAbZE_wCJ-2U&cx=017576662512468239146:omuauf_lfve&q=lectures&callback=handleResponse"]]retain];
NSURLConnection *myConnection = [NSURLConnection connectionWithRequest:request delegate:self];
[myConnection start];
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
[dataWebService setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[dataWebService appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSString *responseString = [[NSString alloc] initWithData:dataWebService encoding:NSUTF8StringEncoding];
NSLog(@"Response: %@",responseString);
[responseString release];
[dataWebService release];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"Error during connection: %@", [error description]);
}
//class 2
@implementation WebJson
//parse JSON
- (void)requestCompleted:(ASIHTTPRequest *)request
{
NSString *responseString = [request responseString];
NSDictionary *dictionary = [responseString JSONValue];
NSDictionary *dictionaryReturn = (NSDictionary*) [dictionary objectForKey:@"request"];
NSString *total = (NSString*) [dictionaryReturn objectForKey:@"totalResults"];
NSLog(@"totalResults: %@", total);
NSString *search = (NSString*) [dictionaryReturn objectForKey:@"searchTerms"];
NSLog(@"searchTerms: %@", search);
int count = [[dictionaryReturn objectForKey:@"count"] intValue];
NSLog(@"count: %d", count);
}
错误是由缺少或错误的库链接引起的,而不是由代码引起的
仔细检查您的框架链接,请毫不犹豫地删除/重新创建链接,并注意您使用框架的iOS版本。(通常使用Xcode提供的列表,不浏览文件)
在您的情况下,链接/System/Library/Frameworks/Security.framework
是一个错误,我不会感到惊讶,因为它看起来不属于iOS SDK,查看它的路径
我想应该是这样的:
/Developer/Platforms/iPhoneSimulator.platform/Developer/sdk/iPhoneSimulator.sdk/System/Library/Frameworks/Security.framework
。我也打了这个。事实证明,在将框架添加到项目中时,我无意中选中了将框架复制到本地目录的复选框
从项目中删除框架
然后添加框架,确保不复制文件。当我将加载框架时可执行文件使用的后缀从“否”后缀更改为“调试”后缀时,我遇到了相同的错误。我认为苹果的调试框架没有跟上时代 如果出于其他原因使用“debug”,则可能会遇到这种情况,然后添加一个调试版本不是最新的框架
与XCode 3一样,后缀设置在可执行文件的“获取信息”窗口的“常规”窗格中可用。在引用未在当前目标操作系统中编译的库、变量或方法时,也会发生这种情况
因此,请检查该符号,看看它是否可用。例如,
CFRelease(CFTypeRef-cf)
在所有iOS框架中都可用,但是CFAutorelease(CFTypeRef-arg)
仅在iOS 7.0(和Mac OSX 10.9)及以上版本中可用,由cf\u available(10\u 9,7\u 0)
指定。我也遇到过这个问题,而且它似乎是iOS 8 SDK中CFNetwork中的一个已知bug(请看这里:)
解决办法如下:
在目标的“链接二进制库”中更改链接顺序,并在CFNET.Frask.Fr.P/P>之前建立基础框架。
这为我解决了问题。将部署目标更改为iOS 8.1。重复?在我看来,你可能想留下这个作为评论。如果你能多提一点,那就太好了。