iOS 协议中定义属性

1
2
3
4
@protocol CETableViewModelProtocol <NSObject>
@property (nonatomic, strong) Class cellClass;
@property (nonatomic, copy ) NSString* cellType;
@end

协议中是可以定义属性的,但是只有对应的getter和setter方法 但是没有对应的成员变量 而getter和setter就是操作的对应成员变量

所以就无法调用getter或者setter 否则项目崩溃

想要调用的话 需要在实现这个协议的类中用@synthesize cellType = _cellType;来声明成员变量,这样这个类的对象就拥有了协议中定义的这些属性,用法跟自身其他属性一样就不啰嗦了。

来看看实例吧:

.h

1
2
3
4
5
6
7
8
9
#import <Foundation/Foundation.h>
#import "CETableViewModelProtocol.h"
NS_ASSUME_NONNULL_BEGIN

@interface CETableViewModel : NSObject <CETableViewModelProtocol>

@end

NS_ASSUME_NONNULL_END

.m

1
2
3
4
5
6
#import "CETableViewModel.h"

@implementation CETableViewModel
@synthesize cellHeight = _cellHeight;
@synthesize cellType = _cellType;
@end