1

この質問とほぼ同じように見えますが、そこにある答えは問題に対処していません。

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上記のファイル以外の場所で宣言または定義していません。どんなアイデアでも歓迎します。

4

2 に答える 2

4

folderServiceグローバル スコープを持つように定義する必要があります。

最初の.m:

#import "first.h"

PlanningDocumentService *folderService = nil;

- (void)serviceDefinition
{    
    folderService = [_myDocumentViews objectAtIndex:[_gridView indexOfSelectedItem]];   
    detail.service = folderService;
}
于 2013-02-15T15:23:51.667 に答える
3

PlanningDocumentService *folderService within - (void)serviceDefinition makes the variable local to the function, but not global. But extern PlanningDocumentService *folderService declares the existence of a global variable, that is never defined.

于 2013-02-15T15:24:33.357 に答える