2011-08-02 10 views
1

之间的NSString这是我一直有关于传递类

混乱

我永远不能似乎找到一个很好的解释,我理解继承,但是从我了解到,是大师班和他们的sublasses之间......如果我想一个的NSString传递到另一个阶级什么那不是的其他

一个子类继承人例如:

class1.h

@interface class1 : UIViewController{ 
NSString *string 
} 
@property (nonatomic, retain) NSString *string 
@end 

class1.m

@implementation class1 
@synthesize string; 
-(void)viewDidLoad{ 
string = @"IM A STRING AHHH"; 
} 

现在可以说,我想传递什么它等于另一个类

class2.h 

#import "class1.h" 
@interface class2 : UIViewController{ 


} 

@end 


class2.m 

@implementation class2 

//i want to use the NSString in here, how do i do that? 

感谢, 雅各

回答

2

首先在课堂上使用[string retain];该字符串1. 然后,在第2课中,导入class1。使类1的对象说cls1。您可以通过cls1.string;

+0

完美!谢谢伙计! – Jacob

1

访问它您可以创建class1一个实例,然后你可以访问string简单地调用

[instance string]; 

instance.string 

如果你不想创建class1的实例您可以定义一种方法,如

+(NSString*)getString; 

然后从class2

[class1 getString]; 
+0

Class1已经拥有 - (NSString *)getString属性 - 注意它应该是一个实例方法并返回一个NSString * – Mark

+0

如您所说,它是一个实例方法。定义'+(NSString *)getString',你不需要创建一个'class1'的实例来获取字符串。 – Saphrosit

+0

但是类方法无法获得实例上属性的值 – Mark

1

Smiriti的答案是正确的...

还有什么可以做的是..

称之为overrirde的init方法,并通过您的NSString作为参数,用它。

1

如果第2类从第1类加载,则可以将该值作为参数发送。

-(id)initwithParameters:(NSString *)parameter 
{ 

    if(self == [super init]) 
    { 
     // access the paramenter and store in yo u avariable  
    } 
    return self; 

} 

在1级

[[class 2 alloc]initwithParameters: ]