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同样,通过在头文件中声明这些变量,您最终会在导入/包含该头文件的每个实现文件中声明它们。将这些变量的声明移动到实际使用它们的(单个)实现文件中。