【问题标题】:Objective c property issue目标c属性问题
【发布时间】:2012-03-04 18:23:35
【问题描述】:

在我的Settings.h 文件中,我有一行

@property (nonatomic, retain) NSArray * connections;

Settings.m 文件中也有导入:

#import "Settings.h"

后来我提供了实现

- (NSArray*)connections 
{
    return connections;
}
- (void)setConnections:(NSArray*)_connections
{
    connections = _connections; 
    // do some more stuff
}

但是在 getter 和 setter 中我都收到关于 use of undeclared identifier 'connections' 的错误 我不知道我做错了什么,所以您的任何帮助将不胜感激!

【问题讨论】:

  • 顺便说一句,非原子保留属性的设置器看起来不是这样!预计会出现意外的内存问题。
  • 你的意思是我必须使用connections = [_connections retain];

标签: objective-c ios5 properties undeclared-identifier


【解决方案1】:

Settings.h 中添加一个实例变量NSArray *connections;(如果它还没有的话),然后在Settings.m 的下方@implementation 中添加这个:

@dynamic connections;

另一种选择是删除您的访问器并使用@synthesize connections; 而不是dynamic,然后将为您创建访问器方法。

【讨论】:

  • 是的,删除我自己的访问器是合理的,但是我必须在 setter 中指定更多的操作,我在这里没有提到。
  • 嗯,当我添加 @dynamic connections; 时,错误并没有消失。
  • 哦,不,不,我犯了一个错误 :) 现在,一切都很好!非常感谢!
  • @dynamic connections需要什么?
  • 嗯,我不知道 - 我只是尝试删除它,没有任何改变,一切都像以前一样
【解决方案2】:

您非常正确地尝试使用 ivar(称为 connections)作为您的属性的后备存储,也称为 connections

要让它工作,你应该像这样声明一个 ivar:

// Settings.h

NSArray * connections;

它应该放在类声明的大括号之间,像这样:

@interface MyClass : MySuperClass {
    NSArray *connections;
    // More ivars...
}

@property (nonatomic, assign) NSArray *connections;

@end

【讨论】:

  • 是的,我已经添加了它并且成功了 :) 谢谢你的帮助!
【解决方案3】:
in Settings.m 

@synthesize connections = _connections;

in setting.h

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多