Могу ли я передать / получить доступ к примитивным типам данных (float, double, int) из другого представления? - PullRequest
0 голосов
/ 06 сентября 2011

У меня есть два класса контроллеров представления ....

Просмотр 1

Просмотр 2

Просмотр 1

@interface BillDataEntryViewController : UIViewController {

    double x;
    double y;

// Этобольшой файл, но показывающий только то, что необходимо ..
}

// Я не объявлял никаких свойств и не синтезировал его?


Представление 2

В другом представлении я создаю объект представления 1 с именем objView1

, но у меня нет доступа к objView1.double ?Почему ..

Ответы [ 4 ]

3 голосов
/ 06 сентября 2011

Вы должны прочитать о свойствах target-c . В частности, модификаторы, которые вы можете указать, указав их в файле .h. Однако, как правило:

  1. Для объектов, для которых вы хотите сохранить ссылку для использования retain - это вызовет сохранение для каждого объекта, который вы ему предоставите (это также вызовет релиз для предыдущего объекта!)

    @property (nonatomic, retain) UIView *view;
    
  2. Для примитивных типов данных используйте assign - это просто установит для вашей переменной значение, которое вы ей дадите:

    @property (nonatomic, assign) float myFloat;
    
  3. Для вещей, которые имеют изменяемый подкласс, используйте copy:

    @property (nonatomic, copy) NSString *myString;
    

    Опция (3) предназначена для таких вещей, как NSString, NSData, NSURL, NSSet, NDictionary и т. Д. - в основном все, что имеет изменяемую версию (т.е. NSString имеет NSMutableString).

  4. readonly, если вы не хотите, чтобы кто-либо мог изменять ваши данные - это работает как для указателей, так и для примитивных типов.

    @property (nonatomic, readonly) double myDouble;
    @property (nonatomic, readonly) UIView *myView;
    
3 голосов
/ 06 сентября 2011

сохранить нельзя дать для примитивных типов.но ты можешь их синтезировать.

3 голосов
/ 06 сентября 2011

Вам нужно будет добавить свойства для каждого ивара и синтезировать их.Тогда вы можете позвонить: objView1.x или objView1.y

@property (nonatomic, assign) double y;
0 голосов
/ 06 сентября 2011

По моему мнению, передача значений между двумя представлениями - плохая идея.Вы должны использовать ViewController для этого.

Более того, вы должны сделать переменные доступными для других объектов, создав геттеры (либо написав методы, либо объявив и синтезируя свойства).

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