@synthesize的正确使用方式
Posted apem
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@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 方法都被重写了;
以上是关于@synthesize的正确使用方式的主要内容,如果未能解决你的问题,请参考以下文章
Objective-C基础笔记@property和@synthesize