我有两个类,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。
谢谢!
答案 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:]返回的对象设置为自动释放,但您需要保留它以确保您拥有有效的字符串实例。
请提供更多代码。