ios - NS_ENUM 作为协议(protocol)中的属性

标签 ios objective-c automatic-ref-counting

我遇到了奇怪的行为。我曾经有:

@property (nonatomic) ApplicationState applicationState;

直接在我的应用程序类中。现在它被提取到协议(protocol)

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

ApplicationState 是枚举

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

现在。它曾经有效。现在这样的行: self.applicationState = ApplicationStateMaximized; 从实现类中调用不会产生任何影响。


更新

Agy , rickster你们都是对的。我忘了添加到这个问题记录中,我已经在实现类中综合了属性。我没有注意到的是,我的同事添加了 getter,它总是返回相同的值(不幸的是,IDE 不显示这个访问器,直到我在我的类中复制属性)

最佳答案

在协议(protocol)中声明一个@property 不会在采用该协议(protocol)的类中为该属性合成存储或访问器。为此,您需要这样的东西:

@implementation Application
@synthesize applicationState = _applicationState;

关于ios - NS_ENUM 作为协议(protocol)中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30984051/

相关文章:

iphone - 我如何在开发过程中测试我的应用程序数据持久性?

ios - 带有 Nib 和自动布局的自定义 UITableViewCell

iOS self.window - 它是什么时候创建的?

objective-c - ARC 在 NSTableview 重新加载数据之前释放我的 NSmutablearray

ios - 如何从 ios 应用程序上传视频到 YouTube?通过使用 Oauth2 和 YouTube DATA 类

ios - 如果我使用标签字体的外观代理,我无法通过 Interface Builder 设置字体大小

objective-c - 阻止应用程序通过 Cocoa API(LittleSnitch API)访问网络?

objective-c - 如何在 Objective-C 中制作 json 字符串的 block ?

ios - iOS 6.0 ARC下需要释放GCD队列吗?

ios - 使用 block 、集合和 ARC 时发生泄漏