zoukankan      html  css  js  c++  java
  • OC中协议, 类目, 时间, 延展, 属性

    只有继承和协议需要引IMPORT "头文件";

    必须接受marryprotocol协议, id<marryprotocol>基于类型的限定, 才能给实例变量赋值

    @property (nonatomic, assign) id<marryprotocol> husband;

    避免Optitonal没有实现的功能

        if ([_husband respondsToSelector:@selector(driver)]) {

            [_husband driver];

        }

    @required//必须实现的协议, 默认协议

    - (void)seeGril;

    @optional//可选实现协议

    - (void)seeYou;

    一个类可以遵守多个协议, 父类后面使用<>

    定义类目   类目标    (类目名)

    @interface NSString (sayHello)

    延展

    延展是一种特殊形式的类目

    只是把类目的声明移到.m文件中

    延展的作用主要就是管理"私有"方法

    延展里面可以定义实例变量, 但是是私有的, 不能被子类继承

    延展里面可以定义属性

    获取当前时间, 但是打印的date是格林尼治时间

            NSDate * date = [NSDate date];

    用于日期对象NSdate和字符串的相互转换

            NSDateFormatter * formattter = [[NSDateFormatter alloc] init];

            hh是12时置, HH是24时值  a是上午  G是公元  E是周几

    类目

    类目(分类, category)只能给已知的类拓展方法, 不能添加实例变量

    类目添加的方法会成为原始类的一部分, 级别相同, 会被子类继承

    类目里不能定义实例变量

    属性就是一对方法, 属性操作实例变量

            [p setAge:24];//只要有setter,与下面的方法完全等价

            p.name = @"张三";

            p.sEx = @"男";

            p.age = 24;

            点在等号左边,是调用setter方法

            点在等号右边,是调用getter方法

            没有等号使用点,调用getter方法

    果需要更改方法名用(setter = xxx:, getter = ooo); 

    readonly表示只读特新, 不可以对内容修改, 只有getter没有setter

    默认的是生成readwrite,既有setter又有getter

    相当于是创建了

    - (void)setName:(NSString *)name;

    - (NSString *)name;

    @property (nonatomic, copy)NSString * sEx;

    原子性特性 默认是atomic, 保证多线程情况下访问实例变量的安全性(实质上是在setter方法中增加了线程锁)

    非原子性特性, nonatmiic(不保证多线程情况下数据安全)

    setter语义特性,assgin, retain, copy

    三个区别会导致生成的setter方法的内部实现不一样

    assgin就是直接赋值, 而retain和copy会进行内存优化

    第一原则:基本数据类型, 必须得用assgin

    第二原则:所有的对象类型都可以用retain

    第三原则:只接受<NSCoping>协议的对象才能写copy

    第四原则:不写默认是assgin

  • 相关阅读:
    4.父类私有属性和方法
    3.单继承和方法的重写
    2.Python封装练习及私有属性
    1.Python面向对象基础
    6.类与对象、封装、构造方法
    5.数组
    4.方法
    3.流程控制语句
    结构型模式和物理视图,模型管理试图的总结
    创建型模式和关于状态视图、活动视图、交互视图的总结
  • 原文地址:https://www.cnblogs.com/MRJ1101/p/3813904.html
Copyright © 2011-2022 走看看