Как разделить объект класса отдельно от класса AppDelegate - PullRequest
0 голосов
/ 08 декабря 2011

Я знаю, что мы можем легко использовать объекты, объявленные в нашем классе appDelegate, выполнив это

myAppDelegate *alpha= (myAppDelegate *)[[UIApplication sharedApplication]delegate];

следовательно, сверху мы можем использовать альфа-объект для получения значения других объектов в классе myAppDelegate.

но предположим, что если у меня есть класс A, и я объявил привет NSString * в его .h и синтезирую его в файле .m.

Теперь в классе B я создаю объект класса A, т.е.

A *classA = [[A alloc]init];
A.hello = [NSString stringWithFormat:@"Kawa banga"];
[classA release];

Теперь в классе C я снова создаю объект класса A

 A *classA = [[A alloc] init];
NSLog(@"%@",classA.hello);

Это дает мне ноль.

Как я могу получить значение моего объекта hello в другом классе.

Ответы [ 2 ]

1 голос
/ 08 декабря 2011

Когда вы объявляете hello как свойство класса A, это переменная экземпляра.Это означает, что он является отдельным для каждого экземпляра A, который вы создаете (с alloc & init).

Похоже, вы захотите поделиться только 1 экземпляром A.Простой способ сделать это - добавить его в качестве свойства вашего myAppDelegate класса.(Кстати, имена классов в Какао обычно начинаются с заглавной буквы, чтобы отличать их от имен переменных)

Как только вы это сделаете, вы сможете получить к нему доступ с помощью:

myAppDelegate *alpha = (myAppDelegate *)[[UIApplication sharedApplication]delegate];
myAppDelegate.classA.hello = @"hello, world";
1 голос
/ 08 декабря 2011

Либо вы должны использовать шаблон Singleton, либо передать объект в требуемый класс.

Я думаю, вам нужно пройти по Singleton Pattern

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