我想在两个类之间传递一个NSMutableDictionary对象。我试过添加一个返回字典的方法无济于事。NSDictionary类之间通过
-(NSMutableDictionary*) getResponse
{
return response; //where response is a dictionary that has keys and objects assigned
}
但即使如此字典不能从其他类拉;它返回“null”。
我想在两个类之间传递一个NSMutableDictionary对象。我试过添加一个返回字典的方法无济于事。NSDictionary类之间通过
-(NSMutableDictionary*) getResponse
{
return response; //where response is a dictionary that has keys and objects assigned
}
但即使如此字典不能从其他类拉;它返回“null”。
我试过添加一个方法,它自己返回无济于事。
-(NSMutableDictionary*) getResponse { return response; }
这是因为该方法返回一个字典。对于自身返回的方法,它必须询问对象self
该方法的选择器的实现,或者要求Objective-C运行时返回Method
结构。
但这不是你真正想要做的,是吗?
如果你的意思是这种方法返回响应字典,那么,这正是它所做的。它的写法是正确的(除了它的名字,我已经在我对这个问题的评论中解释过了)。
...但即使如此,数据不能从其他类中拉出;
该方法不声称返回一个数据对象;它声称返回一个字典对象。如果它返回了一个数据对象,那就是一个错误。
...它返回void。
不,它返回NSMutableDictionary *
。 void
是一种类型;没有其他方面是有道理的。
如果你的意思是返回nil
(指向没有对象的指针),那就意味着你没有返回的响应字典。不要问这个对象的响应,直到它有一个。
您可能希望让响应的对象成为保存响应的对象的委托,并让响应持有者在响应进入时向其委派发送消息。您甚至可以将响应包含在那个信息;另一种选择是答复持有者只通过自己,而代表则询问答复持有人是否在其实施委托方法时使用响应字典。
的更多信息:
我编辑我的问题,使更有意义。不过由于某些原因,这个变量似乎不被保留。我会检查我的代码。谢谢。 – Baub
@James Martinez:你的代码没有理由保留它。您不保留此权限,因此只有在主叫方保留该权限时才能保留该权限。如果您在'response'中引用了字典的原始所有权,则getter不是查找该字典的地方:查看setter或者原始赋值给变量或属性。请注意,分配给变量并分配给属性与Objective-C语言文档中讨论的非常不同。 –
如果你的方法返回零,这是因为你的response
变量为零。目前可能无法初始化。尝试在getResponse方法中执行NSLog(@"Response: %@", response);
。查看控制台是否打印(空)或有效的NSMutableDictionary对象。
没有什么错你的榜样...如果在你的课堂上定义了“response”,这将返回它。确保其他课程保留它! –
它有一个错误:它的名字。它应该只是“响应”符合Cocoa命名约定。以'get'开头的选择器应以冒号结尾,并且参数应该是存储获取值(通过引用返回)的指针。这种方法很好,但应该简单地命名为“响应”。 –