【学习ios之路:Objective-C】设置器,访问器,自定义初始化和多参赋值

来源:互联网 发布:淘宝网页版怎么看微淘 编辑:程序博客网 时间:2024/06/07 01:02

1.设置器和访问器的定义

 *   给单一实例变量赋值的方法叫做设置器.(setter方法)
 *   给单一实例变量值的方法叫做访问器.(getter方法)

2.为什么用设置器(setter)和访问器(getter)

* 实例变量的可见度有:

1).private:只有在本类文件中访问.即.h和.m文件,,访问方式:直接访问.

2).protected:在本类文件和子类文件中访问.访问方式:直接访问.

3).public: 在本类文件和子类文件及其它文件都可以访问. 访问方式:在本类及子类是直接访问,在其它文件:对象(实例访问)

 * 系统默认的实例变量可见度是@protected.

 *   1.为什么不默认@public?
 *    @public或造成实例变量公开的,在任何地方都可以访问,不安全,违背了封装(方便别人,为难自己)的思想.
 *   2.为什么不默认@private?
 *    @private会造成父类的实例变量子类不可以访问,违背了继承(子类继承以及可以访问从父类继承的内容)的思想.

3.settter与getter命名规范

  *  setter方法命名规范 *  :减号方法 无返回值 ,以set开头 +实例变量名首字母大写,有一个参数,参数的类型与实例变量名相同,参数名与实例变量名相同. *  getter方法命名规范    :减号方法 无返回值.返回值类型和实例变量类型相同,方法名和实例变量名相同,无参数. *

例如:Person.h文件

@interface Person : NSObject{    NSString *_name;    NSString *_sex;} //setter和getter- (void)setSex:(NSString *)sex;- (NSString *)sex;- (void)setName:(NSString *)name;- (NSString *)name;@end
2).实现getter和setter方法: Person.m文件,
@implementation Person- (void)setName:(NSString *)name {    _name = name;}- (NSString *)name {    return _name;}- (void)setSex:(NSString *)sex {    _sex = sex;}- (NSString *)sex {    return _sex;}@end
3).访问实例变量

      {        Person *person = [[Person alloc] init];        [person setName:@"asd"];            NSString *name1 = [person name];        NSLog(@"%@", name1);    }

4.对象自定义初始化

 自定义初始化 :如果想再对象初始化时赋一些有意义的初值,则需要自定义初始化方法

例:1).声明

  //给Person对象,进行初始化赋值- (id)initWithName:(NSString *)name sex:(NSString *)sex;
2).自定义初始化方法实现.

//初始化操作还是赋值操作,只不过该过程在初始化阶段.- (id)initWithName:(NSString *)name sex:(NSString *)sex {     self = [super init];       if (self != nil) {          _name = name;          _sex = sex;         }      return self;//在减号方法中代表调用该方法的对象.}

5.多参赋值.

例子:1)声明

- (void)setName:(NSString *)name sex:(NSString *)sex; 
2).实现

//多参赋值实现- (void)setName:(NSString *)name sex:(NSString *)sex {    _name = name;    _sex = sex;}
6.自定义初始化和多参赋值的区别
    1.时机不同:初始化方法是在初始化阶段,赋值方法是在对象创建完之后

    2.调用次数不同:初始化一个方法生命周期内只能调用一次,赋值方法调用多次.
    3.作用不同:初始化是赋值,赋值是改值.
 初始化:

      对象开辟空间之后立即做赋值操作,此过程叫初始化,一个对象的空间开辟只有一次,所有初始化过程也只有一次.


注:#pragma mark - +号方法  //(编译指示:pragma)当函数方法过多时,可以清晰查询加减号方法



0 0
原创粉丝点击