Effective Objective-- 对象,消息,运行期

1:属性
* 在实现自定义初始化方法的时候,一定以要遵循属性定义中所宣称的“copy”语义,因为属性定义就相当于类和待设置的属性值之间所达成的契约:

 - (instancetype)initWithChat:(NSString*)chat
{
    if (self = [super init]) {
    //不应该在消息的init方法中调用存取方法
        _chat  = [chat copy];
    return self;
}

2:在对象内部读取实例变量的时候采用直接访问的方式,而在设置实例变量的时候通过属性来做;

  • 在“惰性初始化”的时候一定要通过存取方法来访问属性;
  • 在初始化方法及dealloc方法中,总是应该直接通过实例变量来读写数据;

3:“对象等同性”

  1. 综述

    • ”==”操作符比较的是两个指针本身,而不是其所指的对象;
    • 两个对象等同性的判断应该使用”isEqual”;
    • 如果已经知道两个受测对象都属于同一个类,应该使用那种方法参考示例代码:
        NSString *foo = @"test";
        NSString *bar = [NSString stringWithFormat:@"%@",@"test"];
        BOOL equalA = (foo == bar);//NO
        BOOL equalB = ([foo isEqual: bar]);//YES
        BOOL equalC = ([foo isEqualToString: bar]);//YES
  1. 特定类所具有的等同性判定方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简简单单lym

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值