Objective-C : Dynamic Binding
learn uses of attributes of @property directive : Objective-C : Attributes of @property Directive
Dynamic Binding: Dynamic bindingAlso called "late binding," it is the linking of a routine or object at runtime based on the conditions at that moment. Dynamic Binding takes one step further to Dynamic typing allowing methods to be called on Dynamic typed variable. In other words, it allows to call a method on variable without enforcing the Datatype of that variable.
Let us look
at a simple code that would explain dynamic binding.
area = side * side;
NSLog(@"The area of square is %f",area);
- (void)calculateAreaOfLength:(CGFloat)length andBreadth:(CGFloat)breadth;
- (void)calculateAreaOfLength:(CGFloat)length andBreadth:(CGFloat)breadth
area = length * breadth;
NSLog(@"The area of Rectangle is %f",area);
Square *square = [[Square alloc]init];
Rectangle *rectangle = [[Rectangle alloc]init];
[rectangle calculateAreaOfLength:10.0 andBreadth:5.0];
NSArray *shapes = [[NSArray alloc]initWithObjects: square, rectangle,nil];
id object1 = [shapes objectAtIndex:0];
id object2 = [shapes objectAtIndex:1];
Now when we
compile and run the program, we will get the following result.
2015-07-18 06:35:29.687 demo The area of square is 100.000000
2015-07-18 06:35:29.688 demo The area of Rectangle is 50.000000
As you can
see in the above example, printArea method is dynamically selected in runtime.
It is an example for dynamic binding and is quite useful in many situations
when dealing with similar kind of objects.