0

I want to use an integer variable from multiple threads.
Hence I want to make getter/setter atomic operation.

at header file

@property (retain) NSNumber* myNumber;

at implementation file

@synthesize myNumber; 

won't compile, what am i missing?
(type of property ‘myNumber’ does not match type of ivar ‘myNumber’)
- edit, I declared it as int myNumber; compilation problem solved

Also, can I use plain int for this? (not NSNumber* )

eugene
  • 39,839
  • 68
  • 255
  • 489

4 Answers4

3

In general, you may use int instead of NSNumber. Type choice depends on the problem you are trying to solve.

The particular error message you get says that your instance variable has a different type than the property with the same name. Do you clare your ivar as int myNumber? In this case you should write

@property int myNumber;

Update

Since properties are atomic by default, you do not need to explicitly write:

@property (atomic) int myNumber;
Alexei Sholik
  • 7,287
  • 2
  • 31
  • 41
2
  1. @property (assign) int myNumber;

  2. Add in @interface NSNumber *myNumber;

Alex Terente
  • 12,006
  • 5
  • 51
  • 71
1

Check your instance variable type.

Something like this in your header file:

@interface Foo : NSObject {
    NSNumber *myNumber;
}
@property (retain) NSNumber *myNumber;
Eimantas
  • 48,927
  • 17
  • 132
  • 168
-2

Use this,

@property (atomic , retain) NSNumber* myNumber;

Or use thislink text it may be helpful

Community
  • 1
  • 1