(iphone) как установить «атомарный» @property для переменной? - PullRequest
0 голосов
/ 19 января 2011

Я хочу использовать целочисленную переменную из нескольких потоков.
Следовательно, я хочу сделать getter / setter атомарной операцией.

в заголовочном файле

@property (retain) NSNumber* myNumber;

в файле реализации

@synthesize myNumber; 

не скомпилируется, что мне не хватает?
(тип свойства 'myNumber'не соответствует типу ivar 'myNumber')
- изменить, я объявил его как int myNumber;решена проблема компиляции

Также можно ли использовать для этого обычный int?(не NSNumber *)

Ответы [ 4 ]

3 голосов
/ 19 января 2011

Как правило, вы можете использовать int вместо NSNumber. Выбор типа зависит от проблемы, которую вы пытаетесь решить.

В полученном вами сообщении об ошибке говорится, что переменная вашего экземпляра имеет тип, отличный от свойства с тем же именем. Вы называете своего ивара как int myNumber? В этом случае вы должны написать

@property int myNumber;

Обновление

Так как свойства атомные по умолчанию, вам не нужно явно писать:

@property (atomic) int myNumber;
2 голосов
/ 19 января 2011
  1. @ property (assign) int myNumber;

  2. Добавить в @interface NSNumber *myNumber;

1 голос
/ 19 января 2011

Проверьте тип переменной вашего экземпляра.

Примерно так в вашем заголовочном файле:

@interface Foo : NSObject {
    NSNumber *myNumber;
}
@property (retain) NSNumber *myNumber;
0 голосов
/ 19 января 2011

Используйте это,

@property (atomic , retain) NSNumber* myNumber;

Или используйте это текст ссылки , это может быть полезно

...