我正在学习Objective-C并且来自垃圾收集的世界。我正在创建一个字典的类(静态)变量,我不确定我是否正确地进行内存管理。我正在使用一种方便的方法,因此对象应该是自动释放的,但我真的不知道我是否需要在课堂上发布或保留它。
我找不到关于如何管理类级别对象的明确文档 - 任何建议都值得赞赏。感谢。
+(NSDictionary*) polygonNames{
NSDictionary* polygonNames = [NSDictionary dictionaryWithObjectsAndKeys:
@"Triangle", @"3",
@"Square", @"4",
@"Square", @"4",
@"Pentagon", @"5",
@"Hexagon", @"6",
@"Heptagon", @"7",
@"Octagon", @"8",
@"Nonagon", @"9",
@"Decagon", @"10",
@"Hendecagon", @"11",
@"Dodecagon", @"12",
nil];
return polygonNames;
}
答案 0 :(得分:3)
如果您的数据结构是不可变的并且不会改变,您可以使用 static 变量,如下所示:
+ (NSDictionary *) polygonNames
{
static NSDictionary *polygonNames = nil;
if (!polygonNames) polygonNames = [[NSDictionary alloc] initWithObjectsAndKeys:/* objects and keys */];
return polygonNames;
}
答案 1 :(得分:2)
我可以推荐网站CocoaDev.com。您将在其中找到以下经验法则:
搜索“经验法则”。因为我不允许添加超链接..
基本上所有名为dictionary*
,array*
等的类方法都将返回一个自动释放的对象,您不必保留/释放它。
如需进一步阅读,我可以推荐“内存管理”页面。