protocol使用@property

1、在protocol中也是可以使用property的,先看代码

#import 

@protocol DataManageDelegate 

@property (nonatomic, copy) NSString *identifier;
@end

在ViewController中遵循了该协议之后,然后给identifier赋值self.identifier = @"123";,运行工程,发现crash了,Xcode提示是:Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ViewController setIdentifier:]: unrecognized selector sent to instance 0x7f8ad4f069e0',意思就是没有实现identifier的setter方法。getter方法没实现同样会crash。

2、解决方法:
加上@synthesize identifier = _identifier;,让编译器自动生成setter和getter方法。这样就不会crash了

3、@dynamic是让系统不要自动生成setter和getter方法,如果使用了@dynamic但是没有自己实现setter和getter方法,赋值或者取值的时候就会crash,这个比较少用。

你可能感兴趣的:(protocol使用@property)