我是第一次尝试通过官方appcelerator docs:iOS Module Quick Start构建本机iOS模块供Titanium应用程序使用。不确定为什么构建失败

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


我注意到dealloc和setExampleProp出现此错误,其中我在ComExampleTestModule.m文件中使用了foo变量。

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

最佳答案

fooComAppcNewmoduleModule的成员,不是ComExampleTestModule。但是您尝试在ComExampleTestModule@implementation ComExampleTestModule)中访问它。
这就是您收到错误的原因。因为ComExampleTestModule不知道foo

关于ios - 使用未声明的已识别变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42645355/

10-12 13:47