2011-09-16 20 views
2

我已經在一個文件中定義了一個結構,現在我想在另一個文件中使用這個結構。我知道它可以使用「::」來調用C++的結構,但爲objective-c如何調用結構。iphone - 如何在不同的文件中調用結構

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中調用結構?

+1

您收到的錯誤消息是什麼? –

+0

嗯,你爲什麼重新發布? http://stackoverflow.com/questions/7439575/iphone-how-to-call-struct-in-different-file如果你問的是完全相同的問題,你可以調整編輯你的問題,而不是發佈一個新問題。 – kjiyoung

+0

@kjyoung我試過告訴他。事實上,我做到了。 Mods已被標記,現在應該立即修復此問題。 – MPelletier

回答

1

在NetWorkConnect的頭文件中聲明配額,而不是在init方法中。然後它將是一個實例變量,可以像任何其他實例變量一樣從任何實例方法訪問。

例如如果你把:

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

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

在NetWorkConnect.h

,那麼你將能夠引用它在其他方法NetWorkConnect.m(包括初始化)。

- (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

非常感謝你,我用你的代碼解決了這個問題 – Gaojian922188

0

你的結構實例是init方法塊本地的,這就是爲什麼你無法在別處訪問它的原因。在您希望訪問的塊中聲明它並使用它。如果您想在整個課程中訪問它,請在第二個.m文件的界面中聲明它。

相關問題