zoukankan      html  css  js  c++  java
  • @synthesize的正确使用方式

    @synthesize的正确使用方式

    一. @synthesize的错误使用方式

    类1和类2是继承关系, name是类1的属性

    但是类2的实现里加入了@synthesize name = _name;

    导致类1的setName name 方法都被重写了

    调用结果: 没有打印任何语句

    类1:

    #import <Foundation/Foundation.h>
    
    @interface MyTestObj : NSObject
    @property (nonatomic, strong) NSString *name;
    
    @end
    #import "MyTestObj.h"
    
    @implementation MyTestObj
    @synthesize name = _name;
    - (void)setName:(NSString *)name
    {
        _name = name;
        NSLog(@"%s invoke", __func__);
    }
    @end

    类2:

    #import "MyTestObj.h"
    
    @interface MyCartObj : MyTestObj
    
    @end
    #import "MyCartObj.h"
    
    @implementation MyCartObj
    @synthesize name = _name;
    
    
    @end
    MyCartObj *cart = [[MyCartObj alloc] init];
        [cart setName:@"myname"];

    调用结果: 没有打印任何语句

    原因: 因为类2使用了@synthesize name = _name, 所以 类1的setName name 方法都被重写了;

  • 相关阅读:
    栈与递归
    细说二叉树的删除操作
    二叉树
    链表队列
    数组队列
    链表栈
    c语言实现数组栈
    c语言实现双链表
    HDU 4557 非诚勿扰(Treap找后继)
    POJ 3481 Double Queue(Treap模板题)
  • 原文地址:https://www.cnblogs.com/apem/p/5307919.html
Copyright © 2011-2022 走看看