Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Objective-C

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
andrei0077
6 / 6 / 1
Регистрация: 23.06.2011
Сообщений: 92
#1

Создание класса, хранящего переменные всего проекта - Objective-C

03.01.2012, 16:07. Просмотров 1851. Ответов 7
Метки нет (Все метки)

Здравствуйте! Хочу создать класс, чтоб в нём хранились переменные всего проекта. И читать их и менять значения из других классов. Типа как статические переменные, только не для чтения, а для записи. Как такое осуществить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2012, 16:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание класса, хранящего переменные всего проекта (Objective-C):

Переменные для всего проекта - C#
Делаю приложение на основе БД! Несколько форм этого приложения работают с одними и теми же данными из этой базы. Хотелось бы при запуске...

Построить описание класса, хранящего информацию о человеке - C#
Доброго времени суток! Помогите, пожалуйста, построить описание класса, содержащего информацию о человеке. Необходимо так же использовать...

Создание контейнера (вектора), хранящего вектора разной размерности - Matlab
Можно ли в матлабе создать вектор, который будет хранить вектора разной размерности? Добавлено через 56 секунд При этом размеры как...

Переменные экземпляра, класса, константы и переменные readonly - C#
Как эту задачу записать в C#? Переменные экземпляра, класса, константы и переменные readonly: – Ф.И.О., – должность, – базовый...

Реализация работы с классами, конструктор, методы класса и переменные класса - Java EE
Всем привет, решил изучать Java. Нашел прикольное задание : Реализовать класс, представляющий собой строку фиксированной длины -...

С++, delete в деструкторе класса не видит переменные, создаваемые new в конструкторе класса - C++
#include "stdafx.h" #include "iostream" #include "math.h" using namespace std; class fun { double t = 0, x = 0, y = 0, z =...

7
Adem
6 / 6 / 0
Регистрация: 17.04.2009
Сообщений: 34
03.01.2012, 16:23 #2
Objective-C
1
2
3
4
5
6
7
8
@interface MyVars : NSObject {
 
int ai, bi, ci;
float af, bf, cf;
 
}
 
@end
Objective-C
1
2
3
4
5
6
7
8
9
@class MyVars;
 
@inteface MyClass : NSObject {
MyVars *myVars;
}
 
@property MyVars *myVars;
 
@end
Так?
1
andrei0077
6 / 6 / 1
Регистрация: 23.06.2011
Сообщений: 92
03.01.2012, 23:05  [ТС] #3
Но получается, если поменять эти переменные, находясь в любом классе, нужно создавать экземпляр класса MyClass и они поменяются только в экземпляре. А нужно, находясь в любом месте поменять их , а потом из любого места получить новые значения.
0
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
04.01.2012, 01:15 #4
Цитата Сообщение от andrei0077 Посмотреть сообщение
Но получается, если поменять эти переменные, находясь в любом классе, нужно создавать экземпляр класса MyClass и они поменяются только в экземпляре. А нужно, находясь в любом месте поменять их , а потом из любого места получить новые значения.
Классическое применение синглтона: http://ru.wikipedia.org/wiki/Одиночк...B0_Objective-C

Один объект на всю программу
2
andrei0077
6 / 6 / 1
Регистрация: 23.06.2011
Сообщений: 92
04.01.2012, 02:11  [ТС] #5
Objective-C
1
2
3
4
5
//h
@interface StaticData : NSObject
+ (StaticData*)staticData;
 
@property (readwrite , copy) NSString *string;
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//m
 
#import "StaticData.h"
 
implementation StaticData
 
@synthesize string;
 
static StaticData *staticDataInstance = nil;
 
+ (StaticData *)staticData
{
    @synchronized(self) {
        static dispatch_once_t pred;
        dispatch_once(&pred, ^{ staticDataInstance = [[self alloc] init]; });
    
    
    }
    
    return staticDataInstance;
}
Вроде всё правильно сделал но когда пытаюсь задать имя переменной из вне [[StaticData staticData] string] = @"new string name"; возникает ошибка error: assigning to 'readonly' return result of an objective-c message not allowed
0
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
05.01.2012, 01:56 #6
Вроде всё правильно сделал но когда пытаюсь задать имя переменной из вне [[StaticData staticData] string] = @"new string name"; возникает ошибка error: assigning to 'readonly' return result of an objective-c message not allowed
@property (readwrite , copy) NSString *string; это не переменная - это пропертя, то есть это только сеттер/геттер и не больше, тут возникает вопрос - к чему будет обращаться пропертя?
Ответ в наведенном примере не к чему..

я бы сделал так:
Objective-C
1
2
3
4
5
6
7
8
@interface StaticData : NSObject
{
    NSString * _string; 
}
@property (copy) NSString * string; 
 
+ (StaticData*)sharedStaticData;
+ (void)sharedStaticDataRemover;
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#import "StaticData.h"
 
implementation StaticData
 
@synthesize string = _string;
 
static StaticData *staticDataInstance = nil;
 
+ (StaticData *)sharedStaticData
{
    if (!staticDataInstance)
        staticDataInstance = [StaticData new];
    
    return staticDataInstance;
}
 
+ (void)sharedStaticDataRemover
{
    [staticDataInstance release];
}
 
-(void)dealloc
{
    [_string release];
    [super dealloc];
}
1
andrei0077
6 / 6 / 1
Регистрация: 23.06.2011
Сообщений: 92
05.01.2012, 20:33  [ТС] #7
Спасибо, прояснили тему. Последний вопрос, как теперь из других классов теперь эту переменную поменять? Я пытаюсь, он пишет, что она не обнаружена.
0
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
06.01.2012, 02:08 #8
Спасибо, прояснили тему. Последний вопрос, как теперь из других классов теперь эту переменную поменять? Я пытаюсь, он пишет, что она не обнаружена.
подключить хэдер #import "StaticData.h" сделать:
Objective-C
1
2
StaticData * sharedData = [StaticData sharedStaticData];
sharedData.string = @"Some new string";
1
06.01.2012, 02:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.01.2012, 02:08
Привет! Вот еще темы с ответами:

метод абстрактного класса не видит переменные дочернего класса - PHP ООП
есть abstract class A{ protected static $dir; public static function f(){} } и два класса B,C наследника { protected static...

Имеется список класса (все имена разные). Определить есть ли в классе человек который побывал в гостях у всего класса - Pascal ABC
Имеется список класса (все имена разные). Определить есть ли в классе человек который побывал в гостях у всего класса. (Решить через...

Переменные из функции класса в функцию другого класса - C++ Builder
Подскажи пожалуйста,как с класса Convector передать в класс Filter одержанный Bitmap и переменные? Convector::Convector() { ...

Константы для всего проекта - Visual Basic .NET
Здравствуйте. Можно ли как нить объявить константы для всего проекта,не в классе. Или vb.net так нельзя? чистый ООП?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru