Как я могу использовать NSString между классами? - PullRequest
0 голосов
/ 11 июля 2010

У меня есть два класса, класс A и класс B, оба они являются подклассами UIViewController.

I класс A У меня есть строка NSString, и я хочу использовать эту строку NSString в классе B.

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 для обоих классов. По какой-то причине я всегда получаю NULL I classB для stringB.

Спасибо!

Ответы [ 2 ]

1 голос
/ 11 июля 2010

Непонятно следующее:

  • на самом деле mainViewController является экземпляром ClassA?
  • является classA даже экземпляром ClassA, поскольку вы объявили его экземпляром ClassB?
  • каков ваш настоящий код, поскольку то, что вы здесь вставили, не компилируется?
  • когда в жизненном цикле ClassA объекта вы инициализируете stringA?
  • это произошло до того, как вы попытались использовать его в своем ClassB объекте?
0 голосов
/ 11 июля 2010

Я хотел бы прокомментировать одну вещь: у вас высокая вероятность RetainLoop, в то время как ClassA сохраняет ClassB, а ClassB сохраняет ClassA.Когда они выпускают?

Второе, в:

ClassA.m:

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

изменить на:

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

, в то время как для объекта, возвращаемого [NSString stringWithString:], установлено автоматическое освобождение, и вам необходимо сохранить его, чтобы убедиться, что у вас есть действительный экземпляр строки.,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...