Цель C: доступ к примитивному типу данных - PullRequest
1 голос
/ 04 июля 2010

Я хочу получить доступ к примитивным типам данных, таким как int, Bool в Objective C. Я создал один класс, в котором я объявил целочисленную переменную.Теперь в другом классе я хочу получить доступ к этим данным, а также установить их значение.

Как и в Objective C, методы установки применимы только для объектов, и я не могу преобразовать int в объект.* Так как я смогу получить доступ к данным?

Пожалуйста, предложите какой-нибудь подход.

Ответы [ 3 ]

4 голосов
/ 04 июля 2010

Вы можете использовать геттеры и сеттеры с примитивами.

Просто используйте @synthesize или создайте свои собственные методы:

- (int)primitiveIvar;
- (void)setPrimitiveIvar:(int)_ivar;
2 голосов
/ 04 июля 2010

Как и в Objective C, методы установки применимы только для объектов, и я не могу преобразовать int в объект.

Откуда вы взяли эту идею.У вас могут быть свойства Objective C, которые являются примитивными типами, использующими либо свойства, либо обычные методы доступа.

// in the .h file
// intIVar and otherIntIvar are int instance variables

@property (assign) int myIntIVar;
//         ^^^^^^ stops the runtime from sending retain or copy to synth'd ivars
-(int) myOtherIntIVar;
-(void) setMyOtherIntIVar;

// in the .m file

@synthesize myIntIVar = intIVar;

-(int) myOtherIntIVar
{
    return otherIntIVar;
}

-(void) setMyOtherIntIvar: (int) newValue
{
    otherIntIvar = newValue;
}
0 голосов
/ 04 июля 2010

chpwn правильно и отвечает на ваш вопрос напрямую. Это просто дополнительная информация.

Если вы хотите преобразовать примитивное значение в объект, например, для использования в NSArray , вы заключаете его в NSNumber следующим образом:

NSNumber *someValue = [NSNumber numberWithInt: 5];  

То же самое относится к float , BOOL , char , double и тонне других примитивных типов.

Чтобы вернуть значение объекта обратно в примитив:

int someInteger = [someValue intValue];  

Правило большого пальца:

Если вы выполняете много математических операций, вам нужен номер для локального использования или вам нужна высокая производительность, используйте примитивы.

Если вы храните значения в классах коллекции ( NSArray , NSSet , NSDictionary и т. Д.) И вам необходимо поведение типа объекта, такое как тесты членства , фильтрация предикатов, простое сохранение на диск или создание списка, используйте NSNumber .

Для получения дополнительной информации посмотрите документацию к классу NSNumber .

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