iphone - как вызвать struct в другом файле - PullRequest
2 голосов
/ 16 сентября 2011

Я определил структуру в файле, и теперь я хочу использовать эту структуру в другом файле. Я знаю, что она может использовать "::" для вызова структуры для C ++, но для target-c как вызвать структуру.

My.h файл "ManageMarketPacket.h"

 #import <Foundation/Foundation.h>   
 typedef struct ORIGINAL_QUOTA_DATA_tag{
    short   id;
    char    exch;                  
}ORIGINAL_QUOTA_DATA;
@interface ManageMarketPacket : NSObject {        
}

Мой файл "ManageMarketPacket.m"

#import "ManageMarketPacket.h"
@implementation ManageMarketPacket
@end

Так что мой файл .m не имеет ничего, поэтомумой другой файл будет использовать структуру, в моем другом файле "NetWorkConnect.m"

#import "ManageMarketPacket.h"
@implementation NetWorkConnect
- (id)init{
    if (self==[super init]) {
       ORIGINAL_QUOTA_DATA quota;
    }
    return self;
}
@end

Так что моя проблема ORIGINAL_QUOTA_DATA quota;, это неправильно ... так как я могу вызвать структуру в NetWorkConnect.m?

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Объявите квоту в вашем заголовочном файле для NetWorkConnect, а не в методе init.Тогда это будет переменная экземпляра, доступная из любых методов экземпляра, как и любая другая переменная экземпляра.

например, если вы поместите:

#import "ManageMarketPacket.h"
// ...

@interface ManageMarketPacket : NSObject {        
    ORIGINAL_QUOTA_DATA quota;
    // ...
}

в NetWorkConnect.h

затемвы сможете ссылаться на него другими способами в NetWorkConnect.m (включая init).

- (id)init{
    if (self==[super init]) {
       quota.id = 1;
       quota.exch = 'A'
    }
    return self;
}

-(void) updateMyQuote:(int)quotaId exch:(char) quotaExch {
      quota.id = quotaId;
      quota.exch = quotaExch;
}

-(void) doSomethingElseWithQuota {
      if (quota.id != someOtherId) {
           quota.exch = 'F';
      }
}
0 голосов
/ 16 сентября 2011

Ваш экземпляр структуры является локальным по отношению к блоку метода init, и поэтому вы не можете получить к нему доступ в другом месте. Объявите это в блоке, к которому вы хотите получить доступ, и поэкспериментируйте с ним. Если вы хотите получить доступ к нему во всем классе, объявите его в интерфейсе для второго файла .m.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...