0
我一直在嘗試使用我的手首次構建一個本機iOS模塊,以便從官方Appcelerator文檔中使用Titanium應用程序:iOS Module Quick Start。不知道爲什麼作爲使用未聲明的已識別變量
'/iphone/Classes/ComExampleTestModule.m:55:20: Use of undeclared identifier 'foo'; did you mean 'for'?
我在那裏我在ComExampleTestModule.m文件中使用富可變注意到這個錯誤的的dealloc和setExampleProp構建失敗。
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
你有沒有在.m文件上試過@synthesize foo? –
沒有@RicardoAlves只是試了一下,因爲它在文檔中說。並做了一個小改動,將顯式傳遞給setExampleProp的foo不起作用。 –
'foo'是'ComAppcNewmoduleModule'的成員,而不是'ComExampleTestModule'。但是你試圖在'ComExampleTestModule'('@implementation ComExampleTestModule')中訪問它。這就是你出錯的原因。 – Larme