0

公式appceleratorのドキュメント:iOS Module Quick Startからチタンアプリケーション用にネイティブiOSモジュールを初めて作成しようとしています。ビルドが宣言されていない識別変数の使用

'/iphone/Classes/ComExampleTestModule.m:55:20: Use of undeclared identifier 'foo'; did you mean 'for'? 

として失敗した理由はわからない私は私がComExampleTestModule.mファイルにfooの変数を使うにdeallocsetExamplePropため、このエラーに気づきます。

ComExampleTestModule.h

#import "TiModule.h" 

@interface ComExampleTestModule : TiModule 
{ 
} 

@end 

@interface ComAppcNewmoduleModule : TiModule 
{ 
    NSString *foo; 
} 
@end 

ComExampleTestModule.m

/** 


* test 
* 
* Created by Your Name 
* Copyright (c) 2017 Your Company. All rights reserved. 
*/ 

#import "ComExampleTestModule.h" 
#import "TiBase.h" 
#import "TiHost.h" 
#import "TiUtils.h" 

@implementation ComExampleTestModule 

#pragma mark Internal 

// this is generated for your module, please do not change it 
-(id)moduleGUID 
{ 
    return @"e5d1b415-6588-4911-9825-3a210032b430"; 
} 

// this is generated for your module, please do not change it 
-(NSString*)moduleId 
{ 
    return @"com.example.test"; 
} 

#pragma mark Lifecycle 

-(void)startup 
{ 
    // this method is called when the module is first loaded 
    // you *must* call the superclass 
    [super startup]; 

    NSLog(@"[INFO] %@ loaded",self); 
} 

-(void)shutdown:(id)sender 
{ 
    // this method is called when the module is being unloaded 
    // typically this is during shutdown. make sure you don't do too 
    // much processing here or the app will be quit forceably 

    // you *must* call the superclass 
    [super shutdown:sender]; 
} 

#pragma mark Cleanup 

-(void)dealloc 
{ 
    // release any resources that have been retained by the module 
    RELEASE_TO_NIL(foo); // Errors out on this line 
    [super dealloc]; 
} 

#pragma mark Internal Memory Management 

-(void)didReceiveMemoryWarning:(NSNotification*)notification 
{ 
    // optionally release any resources that can be dynamically 
    // reloaded once memory is available - such as caches 
    [super didReceiveMemoryWarning:notification]; 
} 

#pragma mark Listener Notifications 

-(void)_listenerAdded:(NSString *)type count:(int)count 
{ 
    if (count == 1 && [type isEqualToString:@"my_event"]) 
    { 
     // the first (of potentially many) listener is being added 
     // for event named 'my_event' 
    } 
} 

-(void)_listenerRemoved:(NSString *)type count:(int)count 
{ 
    if (count == 0 && [type isEqualToString:@"my_event"]) 
    { 
     // the last listener called for event named 'my_event' has 
     // been removed, we can optionally clean up any resources 
     // since no body is listening at this point for that event 
    } 
} 

#pragma Public APIs 

-(id)example:(id)args 
{ 

    return @"hello world"; 
} 

-(id)exampleProp:(id)foo 
{ 
    NSLog(@"[INFO] In Module - the stored value for exampleProp: %@", foo); 
    return foo; 
} 

-(void)setExampleProp:(id)value 
{ 
    // Macro from TiBase.h to type check the data 
    ENSURE_STRING(value); 
    // Call the retain method to keep a reference to the passed value 
    foo = [value retain]; // Errors out on this line 
    NSLog(@"[INFO] In Module - the new value for exampleProp: %@", value); 
} 

@end 
+0

あなたは.mファイルの@synthesize fooを試しましたか? –

+0

Nope @ RicardoAlvesはドキュメントで述べたように試しました。そして、動作しないsetExamplePropのために明示的にfooを渡すように軽微な変更を加えました。 –

+2

'foo'は' ComExampleTestModule'ではなく、 'ComAppcNewmoduleModule'のメンバーです。しかし、あなたは 'ComExampleTestModule'(' @implementation ComExampleTestModule')でそれにアクセスしようとします。だからあなたはエラーを受けている。 – Larme

答えて

2

fooComAppcNewmoduleModuleのメンバーではないComExampleTestModuleあります。しかし、ComExampleTestModule@implementation ComExampleTestModule)にアクセスしようとしています。
ComExampleTestModulefooを知らないので、エラーが発生しています。

関連する問題