开发者

Objective C: Access of primitive data type

I want to access primitive data types like int, Bool in Objective C. I have created one class in which I declared an integer varriable. Now in other class i want to access this data and also set the value of it.

As in Objective C setter methods are applicable only for objects and I can't convert int to object.

So how would I be able to access the data ?

Please suggest some approach.开发者_高级运维


You can use getters and setters with primitives.

Just use @synthesize, or create your own methods:

- (int)primitiveIvar;
- (void)setPrimitiveIvar:(int)_ivar;


As in Objective C setter methods are applicable only for objects and I can't convert int to object.

Where did you get that idea. You can have Objective-C properties that are primitive types using either properties or normal accessors.

// 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;
}


chpwn is correct and answers your question directly. This is just additional info.

If you want to convert a primitive value to an object, like for use in an NSArray, you wrap it in an NSNumber like this:

NSNumber *someValue = [NSNumber numberWithInt: 5];  

The same thing applies to float, BOOL, char, double and a ton of other primitive types.

To put the object value back into a primitive:

int someInteger = [someValue intValue];  

Rule of thumb:

If you're doing lots of math operations, need a number for local use, or need high performance, use primitives.

If you're storing values in the collection classes (NSArray, NSSet, NSDictionary etc…) and need object-like behaviors such as membership tests, predicate filtering, easy saving to disk or plist creation, use NSNumber.

Have a look at the NSNumber class documentation for more info.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜