2015-06-22 138 views
0

我遇到了奇怪的行爲。我曾經有:NS_ENUM作爲協議屬性

@property (nonatomic) ApplicationState applicationState;

直接在我的應用程序類。現在,它的提取協議

@protocol ApplicationProtocol <NSObject> 
@property (nonatomic) ApplicationState applicationState; 

ApplicationState是枚舉

typedef NS_ENUM(NSUInteger, ApplicationState) 
{ 
    ApplicationStateNormal = 0, 
    ApplicationStateExpanded = 1, 
    ApplicationStateMaximized = 2 
}; 

現在。它曾經工作。現在這樣的行: self.applicationState = ApplicationStateMaximized; 從執行類調用不起作用。


UPDATE

Agyrickster你都是對的。我忘了添加這個問題筆記,我已經綜合了實現類的屬性。我沒有注意到什麼,我的同事加入它總是返回的值相同的吸氣劑(可惜的是IDE deosn't顯示此訪問,直到我重複在我的類屬性)

回答

1

您需要合成的屬性:

@implementation Application 

@synthesize applicationState = _ applicationState; 

@end 

或再次申報財產:

@interface Application : NSObject <ApplicationProtocol> 

@property (nonatomic) ApplicationState applicationState; 

@end 
2

在協議不合成存儲聲明一個@property或者採用協議的類中的那個屬性的訪問器。對於這一點,你會想是這樣的:

@implementation Application 
@synthesize applicationState = _applicationState;