Objective c 使用静态变量->;目标C
我在声明和使用静态变量时收到警告Objective c 使用静态变量->;目标C,objective-c,Objective C,我在声明和使用静态变量时收到警告 static int m_chSequenceChar; @interface data : NSObject { } -(id)init; -(void)initialze; @end @implementation data - (id)init { m_chSequenceChar= 0; } + (void)initialize { m_chSequenceChar= 0; } @end 警告:已定义“m_chSequence
static int m_chSequenceChar;
@interface data : NSObject
{
}
-(id)init;
-(void)initialze;
@end
@implementation data
- (id)init
{
m_chSequenceChar= 0;
}
+ (void)initialize
{
m_chSequenceChar= 0;
}
@end
警告:已定义“m_chSequenceChar”
但未使用
编辑:
data.h
------
static int m_nMessageId; //Message ID
static int m_uSessionId; //Session ID
static int m_chSequenceChar; //Sequence ID
static int* m_pData; //Integer buffer to carry data
static int m_uDataSize; //Datasize
@interface data : NSObject {
@public
}
data.m
------
@implementation data
+ (void)initialize
{
m_uSessionId = 0;
m_chSequenceChar= 0;
m_nMessageId = 0;
m_pData = 0;
m_uDataSize = 0;
}
- (id) initWithID:(int) uMessageId withData:(id)pData withSize:(size_t) uDataSize
{
if(self=[super init])
{
// Initialize the member variables
m_uSessionId = 0xFF;
m_chSequenceChar= 10;
// Initialize values from derived class
m_nMessageId = uMessageId;
m_pData = (int*)pData;
m_uDataSize = (int)uDataSize;
}
NSLog(@"Data size:%d",uDataSize);
NSLog(@"m_pData:%d",m_pData);
NSLog(@"pData:%d",pData);
data* dat = [data alloc];
return self;
}
@end
这是因为您没有在代码中读取
mchsequencechar
的值。如果你没有阅读它,你就没有使用它,因此警告
另外,当
数据的实例接收到-init
时,是否确实要将mchsequencechar
重置为0
?通常,+初始化
就足够了。事实上,您甚至不需要显式地将其设置为0
@Beata您是否已更改代码以使用该变量?如果是,请编辑您的问题并粘贴代码。@Beata您的新代码也不读取/使用m_chSequenceChar
:您正在为其赋值,但根本没有读取/使用变量。事实上,您在-init
中给它赋值,这让我觉得您一开始不需要类变量。@bavariable:我希望它作为类变量。请参阅编辑的代码中,我没有使用-(init)方法初始化。我使用的是+(void)初始化函数。我正在使用同一类中另一个函数上的所有变量来打印值。调用时method@Beata您确实有一个实例初始化器:-initWithID…
并且您正在为该变量赋值-请参见m\u chSequenceChar=10代码>。事实上,您正在使用实例初始化器为类变量赋值,与您在+initialize
中指定的变量相同。您粘贴的代码没有显示这个“另一个函数”,它应该读取变量,这是我在第一条评论中要求您的。@Beata同样,通过在头文件中声明这些变量,您最终会在导入/包含该头文件的每个实现文件中声明它们。将这些变量的声明移动到实际使用它们的(单个)实现文件中。