Advertise with us

Performance difference between dot notation versus method call in Objective-C

You can use a standard dot notation or a method call in Objective-C to access a property of an object in Objective-C.

myObject.property = YES;

or

[myObject setProperty:YES];

Is there a difference in performance (in terms of accessing the property)? Is it just a matter of preference in terms of coding style?

Last updated:8/1/2015 12:04:08 AM

1 Answers

naomi burke
naomi burke

Dot notation for property access in Objective-C is a message send, just as bracket notation. That is, given this:

Foo *foo = [[Foo alloc] init];

foo.bar = YES;

@interface Foo : NSObject

@property BOOL bar;

@end

Foo *foo = [[Foo alloc] init];

foo.bar = YES;

foo setBar:YES];

The last two lines will compile exactly the same. The only thing that changes this is if a property has a getter and/or setter attribute specified; however, all it does is change what message gets sent, not whether a message is sent:

@interface MyView : NSView

@property(getter=isEmpty) BOOL empty;

@end

if ([someView isEmpty]) { /* ... */ }

if (someView.empty) { /* ... */ }

Both of the last two lines will compile identically.

 

 

Answer