2013-07-18 33 views
-3

我是新來的/學習Objective-C和iOS開發人員 - 這裏有一個基本問題,我無法得到我的頭。在ClassA中設置變量和在ClassB中查看

我有2個班。

在ClassA中,在頭文件中,我定義了一個NSString對象(planetNameImage),因此它是可公開訪問的。然後在.m文件我將它用:

self.planetNameImage = planetSelected; 

在ClassB的,我想檢索此值,所以我第一instanitate ClassA的使用:

ClassA *claA = [[ClassA alloc] init]; 

然後嘗試撥打該變量使用:

NSString *imageName = claA.planetNameImage; 

但是,這不工作 - 任何想法?

謝謝。

+2

工作不作爲...?獲得錯誤的價值?編譯錯誤? ...? –

+0

*其中*在.m文件中? – Kreiri

+0

發佈您的完整代碼(包括聲明)。很難弄清楚3個不相交的片斷髮生了什麼。 – Greg

回答

0

要將類的實例變量訪問到其他類中,需要將其定義爲屬性。 你可以做,在ClassA.m

在classA.h

如下

@property (nonatomic,copy) NSString * planetNameImage; 

@synthesize planetNameImage; 

@property將爲planetNameImage二傳手& getter方法,您可以在ClassB的使用它。

+0

嗨, 我已經創建該屬性(與m文件中的synthensize,因爲我使用iOS6)仍然沒有通過ClassB方面。 –

+0

請給我寫你如何訪問它。 – Suryakant

0

最好的方法是通過NSString名稱是planetNameImage到您的類別B

寫代碼,當你切換到B級

ClassB *obj = [[ClassB alloc] init]; 
obj.newString = planetNameImage; 
[obj presentModelViewController:obj animated:YES]; 

不要忘了把NSString *newString並設置@property過,在ClassB.h文件。

+2

爲什麼presentViewController? –

0

你需要讓planetNameImage作爲其財產

@property (nonatomic) NSString *planetNameImage ; 

和.m文件

synthesize planetNameImage ; 

另外,我覺得你需要把下面的語句中的ClassA

init方法
self.planetNameImage = planetSelected; 
0

有基地只有兩種方法來處理這個問題。

方法我聲明伊娃和揭露存取方法

// .h file 
@interface ClassA : NSObject { 
    NSString *planetNameImage; 
} 

- (NSString*) getPlanetNameImage; 

@end 

// .m file 
@implementation ClassA 

- (NSString*) getPlanetNameImage { 
    return planetNameImage; 
} 

@end 

方法我財產申報和綜合

// .h file 
@interface ClassA : NSObject 

@property(nonatomic,strong)NSString *planetNameImage; 

@end 

// .m file 
@implementation ClassA 

@synthesize planetNameImage; 

@end 

如何ClassB的

使用
#import "ClassA.h" 

- (void) someClassBMethod { 
    ClassA *claA = [[ClassA alloc] init]; 
    NSLog(@"String: %@", [claA getPlanetNameImage]); 
    //OR 
    NSLog(@"String: %@", claA.planetNameImage); 
} 

希望有所幫助。

1

怎麼辦?

ClassA.h 

@interface ClassA:NSObject 
    @property (retain, nonatomic) NSString *planetNameImage 
@end 

ClassB.m 
#import "ClassA.h" 

@implementation ClassB 
- (void)someFunc 
    { 
     ClassA *instance = [ClassA new]; 
     instance.planetNameImage = @"name of image"; 
     NSString *imageName = instance.planetNameImage; 
    } 
@end 
0

試試這個:

ClassA.h

@property (nonatomic, retain) NSString *planetNameImage; 

ClassA.m

@synthesize planetNameImage = _planetNameImage; 

_planetNameImage = planetSelected; 

ClassB.m

NSString *imageName = classA.planetNameImage; 
相關問題