2013-02-15 123 views
1

似乎幾乎是this question的副本,但答案並沒有解決問題。extern導致鏈接器錯誤

first.h

extern PlanningDocumentService *folderService; 

first.m

#import first.h 

- (void)serviceDefinition 
{  
    PlanningDocumentService *folderService = [_myDocumentViews objectAtIndex:[_gridView indexOfSelectedItem]]; 
    detail.service = folderService; 
} 

second.h

#import first.h 

second.m

#import second.h 

+(NSArray*)getDocumentData 
{ 
    NSString *passedCaption = folderService.caption; 
} 

給出了錯誤:

Undefined symbols for architecture i386: 
    "_folderService", referenced from: 
     +[GenericService getDocumentData] in GenericService.o 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

我沒有聲明或定義除上述文件以外的任何地方folderService。 歡迎任何想法。

+0

其中是folderService創建?你只是把外部,但你實際上必須創建變種 – Ultrakorne 2013-02-15 15:22:45

回答

4

您需要定義folderService有全局範圍:

first.m:

#import "first.h" 

PlanningDocumentService *folderService = nil; 

- (void)serviceDefinition 
{  
    folderService = [_myDocumentViews objectAtIndex:[_gridView indexOfSelectedItem]]; 
    detail.service = folderService; 
} 
+0

完美工作,謝謝! – Robert 2013-02-15 15:30:08

3

PlanningDocumentService *folderService- (void)serviceDefinition使局部變量的函數,而不是全球性的。但extern PlanningDocumentService *folderService聲明瞭全局變量的存在,這是從未定義的。

+0

也砰的一聲。如果允許的話,會接受這兩個答案。 =) 謝謝。 – Robert 2013-02-15 15:35:43

相關問題