我遇到了奇怪的行为。我曾经有过:
@property (nonatomic) ApplicationState applicationState;
直接在我的Application类中。现在它被提取到协议
@protocol ApplicationProtocol <NSObject>
@property (nonatomic) ApplicationState applicationState;
ApplicationState是Enum
typedef NS_ENUM(NSUInteger, ApplicationState)
{
ApplicationStateNormal = 0,
ApplicationStateExpanded = 1,
ApplicationStateMaximized = 2
};
现在。它曾经工作过。现在这样一行:
self.applicationState = ApplicationStateMaximized;
从实现类调用没有任何影响。
更新
Agy,rickster你是对的。我忘了添加这个问题注释,我已经在实现类中合成了属性。我没有注意到,我的同事添加了getter,它总是返回相同的值(不幸的是,IDE deosn并没有显示这个访问者,直到我在课堂上复制了属性)
答案 0 :(得分:2)
在协议中声明@property
不会在采用该协议的类中合成该属性的存储或访问器。为此,你需要这样的东西:
@implementation Application
@synthesize applicationState = _applicationState;
答案 1 :(得分:1)
您需要合成属性:
@implementation Application
@synthesize applicationState = _ applicationState;
@end
或再次申报该财产:
@interface Application : NSObject <ApplicationProtocol>
@property (nonatomic) ApplicationState applicationState;
@end