ios - 分配给只读属性错误 iOS 6

标签 ios objective-c properties ios6 attributes

我有一个名为 Constants 的单例类,我需要在其中设置一些应用范围的常量。我喜欢这些常量是只读的。所以我在 Constants.h 文件中做了以下操作

 @interface Constants : NSObject
 {

 }

 @property (nonatomic, readonly)double U_LAT;
 @property (nonatomic, readonly)double U_LNG;

然后在我的.m文件中我得到了这个方法

 -(id)init
 {
     self = [super init];

     self.U_LAT = 49.2765;
     self.U_LNG = -123.2177;

     return self;
 }

我从这段代码中得到这个错误:

 Assignment to readonly property

我可以不在 init 方法中初始化我的只读变量吗?如果不是,我该如何初始化它们?

最佳答案

self.propertyName = val;[self setPropertyName:val]; 相同——它需要一个 setter 方法才能存在。只读属性没有 setter 方法。

您可以直接设置支持该属性的 ivar,但是:

-(id)init
 {
     self = [super init];

     _U_LAT = 49.2765;
     _U_LNG = -123.2177;

     return self;
 }

如果您允许自动合成属性,则 ivar 的名称将是带有下划线前缀的属性名称。如果您有明确的 @synthesize propName;,则 ivar 将具有相同的名称。您还可以使用任何您喜欢的名称创建一个变量,再次使用合成语句:@synthesize cat = dog;

属性也可以公开只读,但类可写;这涉及在类扩展中声明一个 setter 方法或 redeclaring the property in the extension .

关于ios - 分配给只读属性错误 iOS 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14665946/

相关文章:

ios - Azure 移动服务中 iOS APNS 通知的 Microsoft 示例有哪些不正确之处?

ios - 检查UDID是否真实

ios - 在 iOS 7 WebView 中嵌入 YouTube 时出现白屏

iphone - 单位 : Establishing WebSocket Connection

iphone - Objective-C 中的问题随机数

ios - 带有 "Bearer Token"的 Twitter 仅应用程序身份验证

ios - 什么时候在服务器产品模型的 SKPaymentQueue 上调用 finishTransaction?

ios - Swift 属性观察不会覆盖

java - 从 Ant 目标向 Java 方法传递变量

Java从property.file中填充int [] []数组