Получить целочисленное значение из другого класса - PullRequest
1 голос
/ 10 июля 2011

Я знаю, что делал это раньше, но я просто не помню, как это сделать.

У меня есть целое число, которое я хочу изменить в другом классе.

как мне это сделать?

MainViewClass : UIViewController {
int score;
}


#import "MainViewClass.h"
OtherClass : MainViewClass{

}

Затем в .m из OtherClass я хочу использовать переменную оценку.

Как мне это сделать?

Я искал в интернете и попробовал несколько вещей, чтобы попытаться заставить его работать, но безуспешно.

Спасибо за внимание! Хорошего дня.

Ответы [ 3 ]

5 голосов
/ 10 июля 2011

В вашем MainViewClass.h вы захотите добавить свой int как свойство этого класса.

@property (nonatomic, readwrite) int score;

Затем в вашем MainViewClass.m вы захотите синтезировать свойство, используя:

@synthesize score;

Теперь, так как ваш подкласс MainViewClass в вашем OtherClass, вы можете получить доступ к его свойствам, используя некоторую комбинацию следующего:

В вашем OtherClass.h добавьте

MainViewClass * mainViewClass;

в вашем OtherClass.m везде, где вам нужен доступ к партитуре, вы должны иметь возможность доступа к ней как таковой.

mainViewClass = (MainViewClass *) self.parent;

, а затем, используя оценку,

mainViewClass.score;
4 голосов
/ 10 июля 2011

В вашем примере int score - это переменная экземпляра или ivar для краткости. Это часть данных, связанных с любым конкретным экземпляром MainViewClass. По умолчанию и по уважительной причине переменные экземпляра имеют видимость @protected, что означает, что только MainViewClass и его подклассы могут получить к нему доступ.

Теперь вы сделали OtherClass подклассом MainViewClass в вашем примере, что означает, что для доступа к score из к тому же объекту вам нужен только тип score или self->score, и от другого объекта, который является MainViewClass, вам нужно только набрать theOtherObject->score. (Этот тип дизайна предоставляет подробности реализации , и поэтому многие кодеры часто считают его плохим проектом, но для такого простого варианта использования, как этот, вам, вероятно, это сойдет с рук. Почему плохо, это обсуждение, которое бушует на протяжении десятилетий и выходит за рамки этого вопроса.)

2 голосов
/ 10 июля 2011

Вы создаете методы getter и setter (или свойство с синтезированными аксессорами) в классе с целым числом, даете другому классу ссылку на некоторый экземпляр первого класса и заставляете его использовать эти аксессоры для получения и установки целого числа .

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