- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我收到错误“currentUpdateMethod”未声明(首次在此函数中使用)。 this 引用的变量 currentUpdateMethod 是在头文件中声明的 SEL 类型的实例变量。因为构建到模拟器并运行应用程序按预期工作,我相信我已经正确设置了所有内容。这个错误今天才出现——我已经在设备上测试了几天没有问题。我确实尝试清理并清理所有目标。我什至在 xcode 的文件中输入变量名,它会自动为我完成变量。什么会导致设备编译在这些变量上失败而不是模拟器编译?
编辑:代码如下。
父类(super class):
#import "Deployable.h"
@interface Drawable : Deployable {
float currentDelta;
SEL currentUpdateMethod;
SEL currentAnimationMethod;
SEL currentBatchMethod;
float rotation;
}
- (id) init;
- (id) initWithActivationTime:(float)time;
- (int) updateWithDelta:(float)delta;
- (int) animate;
- (int) batch;
@end
然后是问题类:
#import "Drawable.h"
#import "Structures.h" //contains Vector2f declaration
@interface Player : Drawable {
Image *playerGraphic;
Vector2f position;
}
@property (nonatomic) Vector2f position;
- (id) initWithImage:(Image *)aGraphic andPosition:(Vector2f)aPosition;
- (void) setupInactiveState;
- (int) updateInactiveState;
- (int) animateInactiveState;
- (int) batchInactiveState;
- (void) setupActiveState;
- (int) updateActiveState;
- (int) animateActiveState;
- (int) batchActiveState;
@end
及其实现,抛出错误的地方:
#import "Player.h"
#import "AIEngine.h"
@implementation Player
@synthesize position;
- (id) initWithImage:(Image *)aGraphic andPosition:(Vector2f)aPosition {
self = [super init];
if(self) {
playerGraphic = [aGraphic retain];
position = aPosition;
}
return self;
}
- (int) deployWithScene:(MainScene *)newScene {
[super deployWithScene:newScene];
[self setupInactiveState];
return 1;
}
- (void) setupInactiveState {
currentUpdateMethod = @selector(updateInactiveState); //'currentUpdateMethod' undeclared (first use in this function)
currentAnimationMethod = @selector(animateInactiveState); //'currentAnimateMethod' undeclared (first use in this function)
currentBatchMethod = @selector(batchInactiveState); //'currentAnimateMethod' undeclared (first use in this function)
}
- (void) setupActiveState {
currentUpdateMethod = @selector(updateActiveState); //'currentUpdateMethod' undeclared (first use in this function)
currentAnimationMethod = @selector(animateActiveState); //'currentAnimateMethod' undeclared (first use in this function)
currentBatchMethod = @selector(batchActiveState); //'currentBatchMethod' undeclared (first use in this function)
}
@end
重申一下,这六个错误仅在为设备构建时抛出。当我为模拟器构建时,应用程序可以正常构建和运行。
Edit2:我只切换到 LLVM 并且没有抛出错误。我想找出问题的根源,而不是仅仅使用其他编译器。有什么想法吗?
最佳答案
我很确定这是 Xcode 中的错误,因为我可以看到您的代码没有任何问题。
我会尝试这两种方法:
1) 为了快速修复,您可以尝试综合变量然后替换
currentUpdateMethod = @selector(updateInactiveState);
与
[self setCurrentUpdateMethod:@selector(updateInactiveState)];
2) 从项目中删除文件。从头开始重新创建类。将旧代码复制到新文件中。
看起来这个人有类似的问题:Strange error regarding instance variables & superclass
如果这些建议有帮助,请告诉我。如果他们这样做,我会恳请您将错误提交给 Xcode 开发人员 :)
关于iphone - 仅在为设备编译时变量 "undeclared",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6119835/
关闭。这个问题需要debugging details .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 5年前关闭。 Improve this question 我在
我的代码即将完成,但它给了我这个错误:“curtemp:未声明的标识符”。和“prevtemp:未声明的标识符”和“缺少”;”在类型'之前(最后一个错误是在“float curtemp = curre
我有两个存储过程,第一个参数带有静态,并且运行良好但是当我使用动态参数时,它给了我一个错误未声明的变量:limitvar 1/程序 `DELIMITER $$ DROP PROCEDURE IF EX
我收到这个奇怪的错误: app_server.c: In function ‘wasFeedRead’: app_server.c:269:14: error: ‘tmp’ undeclared (f
我的编译器和我无法就声明达成一致.. game *copyGame(game *game) { game *copy = newGame(game->size); copy->size = g
我收到错误“currentUpdateMethod”未声明(首次在此函数中使用)。 this 引用的变量 currentUpdateMethod 是在头文件中声明的 SEL 类型的实例变量。因为构建到
我正在使用 linux c 中的克隆功能。 但是,当我尝试编译我的代码时遇到错误 CLONE_VM undeclared (first use in this function)。 我去谷歌寻找解决方
为什么在编译 GLSL 几何着色器时会出现此错误? ERROR: 0:15: 'gl_VerticesIn' : undeclared identifier 这是着色器: // makes wiref
当我尝试编译我的程序时,我在下面收到此错误,但我已经包含了包含“LittleMonkey”类声明的头文件。 1>------ Build started: Project: Estrellas, Co
在以python-2.7.6作为引用编译VC++ 2008项目时,出现以下错误 Python27/symtable.h(55): error C2065: 'mod_ty': Undeclared I
我试图在 Delphi XE2 中使用 randomrange 函数,但由于某种原因,它在尝试运行它时不断给我一个未声明的标识符错误,这是我的代码。 var Form3: TForm3; nu
来自 the web我知道 C 包含 NUL 关键字。 编译时出现错误 NUL undeclared first use in this function' 我的代码片段: for (;;) {
我正在使用 Eclipse BPEL Designer 和 Apache ODE。然后我尝试在 catalina.out 中部署我的流程,但收到错误 org.apache.ode.bpel.iapi.
我有以下代码: for(int iY=0;iY<(Height-YRemainder);iY=iY+16); { for(int iX=0;iX<
我尝试在程序中使用结构,但收到一堆错误消息,指出 time1、time2 和 hourDif 是未声明的标识符。我以为我按照你应该的方式声明了这些结构,所以我对问题是什么感到困惑。 代码如下: #in
我正在使用信号量创建生产者和消费者文件以进行同步。我创建了一个定义 sem_t 变量的结构。 sem_t 变量之一是互斥体。 Mutex 代表互斥。但是,当我编译代码时出现错误,提示“互斥体”未声明。
我遇到了这个问题: LOWORD 未声明 使用这段代码: case WM_COMMAND: { if (lParam==0) {
抱歉我的英语不好。 我的代码 #include int main(void) { CONDITION_VARIABLE cond; return 0; } 编译时出
我正在尝试为对象设置安全权限。这是代码: PROCESS_INFORMATION pi = {0}; STARTUPINFO si = {0}; si.cb = sizeof(
关于导致此编译时错误的原因的任何想法? 基本设置: main.cpp #include #include "GroupTheorizer.h" int main() { // ...
我是一名优秀的程序员,十分优秀!