如何在类之间使用NSString?

时间:2010-07-11 09:28:52

标签: objective-c class nsstring

我有两个类,A类和B类,它们都是UIViewController的子类。

我是A类我有一个NSString,我想在B类中使用这个NSString。

ClassA.h:

@class ClassB;
@interface ClassA : UIViewController {
   ClassB *classB;
   NSString stringA;
}
@property (nonatomic, retain) ClassB *classB;
@property (nonatomic, retain) NSString *stringA;

@end

ClassA.m:

stringA = [NSString stringWithString:webView.request.URL.absoluteString];

ClassB.h:

@class ClassA;
@interface ClassA : UIViewController {
   ClassB *classA;
   NSString stringB;
}
@property (nonatomic, retain) ClassB *classA;
@property (nonatomic, retain) NSString *stringB;

@end

ClassB.m:

- (void)viewWillAppear:(BOOL)animated { 
self.stringB = classA.stringA;
}

当然我为这两个班做了#import。 由于某种原因,我总是得到NULLB classB for StringB。

谢谢!

2 个答案:

答案 0 :(得分:1)

以下内容尚不清楚:

  • mainViewController实际上是ClassA
  • 的实例
  • 即使是classA的实例也是ClassA,因为您已将其声明为ClassB的实例?
  • 你的真实代码是什么,因为你在这里粘贴的东西不能编译?
  • ClassA对象的生命周期中,您是否初始化stringA
  • 是否在您尝试在ClassB对象中使用它之前发生了这种情况?

答案 1 :(得分:0)

我想评论一下你有很高概率的RetainLoop,而ClassA保留了ClassB,而ClassB保留了ClassA。他们什么时候发布?

第二件事,在:

ClassA.m:

stringA = [NSString stringWithString:webView.request.URL.absoluteString];

更改为:

self.stringA = [NSString stringWithString:webView.request.URL.absoluteString];

虽然[NSString stringWithString:]返回的对象设置为自动释放,但您需要保留它以确保您拥有有效的字符串实例。

请提供更多代码。