I MISUNDERSTANDING ENCAPSULATION RULES IN OBJECTIVE C.

Tarun Kumar

Total Post:214

Points:1642
Posted by  Tarun Kumar
 824  View(s)
Ratings:
Rate this:

I will explain my question from an example.

In .H file//

@interface Employee:NSObject {

@private NSString *name;

}

@property(nonatomic,retain) NSString *name;

@end

in .M file//

@implementation {

@synthesize name; 

}

 

In this scenario when i access the name property within another class , like myEmp.Name = @"John"; it doesn't raise any issue. Does this according to the encapsulation rules or am I misunderstanding?

  1. Jessica James

    Post:16

    Points:114
    Re: I misunderstanding Encapsulation rules in objective c.

    In Objective-C, only an instance method of object can access an instance variable. There is no way for an external object to access the instance variables of an object directly. The @private is only relevant to inheritance.

     

    To make the variables accessable there are properties. A property defines a method, and methods on Objective-C are all public. There is no way in Objective-C do define private methods, you can only "hide" them by declaring them somewhere else than the public .h file (e.g. inside the .m file via @interface Employee() which declares an anonymous section).

      Modified On Mar-18-2016 11:22:10 PM

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!