iphone, как вызвать членов структуры - PullRequest
0 голосов
/ 19 сентября 2011

мой ManageMarketPacket.h имеет структуру, например:

#import <Foundation/Foundation.h>
typedef struct ORIGINAL_QUOTA_DATA_tag{
    unsigned short  id;
    unsigned char   exch;          
}ORIGINAL_QUOTA_DATA;
@end

, а в ManageMarketPacket.m была функция, намеревающаяся получить идентификатор:

- (unsigned short)getId:(NetWorkConnect*)netWokrConnect{
   //I want to get the id which have assigend in netWokrConnect.m  
   //I tried "return (netWokrConnect->oQuota).id; "is incorrect  
}

и в моем NetWorkConnect.h, я определил структуру:

#import <Foundation/Foundation.h>
#import "ManageMarketPacket.h"
@interface NetWorkConnect : NSObject{    
    ORIGINAL_QUOTA_DATA oQuota;    
}

в NetWorkConnect.m, я назначил oQuota.and в другом файле, я вызываю функцию getId;

Ответы [ 2 ]

0 голосов
/ 19 сентября 2011

Сначала вы должны сделать свойство из oQuota, чтобы сделать его видимым вне класса, который его определяет. Тогда вы можете просто назвать это так: netWorkConnect.oQuota.id

0 голосов
/ 19 сентября 2011

Есть несколько вещей, которые нужно изменить, чтобы это работало.

  1. Прежде всего, вам нужно изменить свою структуру, потому что вы используете имя переменной idid - зарезервированное ключевое слово Objective-C.Я изменил его на identifier, и вам нужно будет изменить любые методы, которые используют переменную

    typedef struct ORIGINAL_QUOTA_DATA_tag {
       unsigned short  identifier;
       unsigned char   exch;          
    } ORIGINAL_QUOTA_DATA;
    
  2. В вашем классе NetworkConnect вам нужно добавить @property и @synthesizeдля вашей переменной oQuota, чтобы вы могли получить к ней доступ из других классов, например:

    In NetworkConnect.h

    #import <Foundation/Foundation.h>
    #import "ManageMarketPacket.h"
    @interface NetWorkConnect : NSObject{    
        ORIGINAL_QUOTA_DATA oQuota;    
    }
    
    @property (readwrite, assign) ORIGINAL_QUOTA_DATA oQuota;
    

    In NetworkConnect.m

    @implementation NetworkConnect
    @synthesize oQuota;
    
        // Rest of your Implementation here...
    
    @end
    
  3. Для доступа к переменной oQuota в вашем методе.Вам нужно изменить его следующим образом:

    - (unsigned short)getId:(NetWorkConnect*)netWokrConnect{
         // I want to get the identifer which have assigend in netWokrConnect.m  
         netWokrConnect->oQuota.identifer;
    }
    

    В качестве альтернативы вы также можете использовать синтаксис . точка, что я предпочитаю так:

    - (unsigned short)getId:(NetWorkConnect*)netWokrConnect{
         // I want to get the identifer which have assigend in netWokrConnect.m  
         netWokrConnect.oQuota.identifer;
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...