繁体   English   中英

如何在Objective C中跟踪类的对象

[英]How to keep track of a class's objects in Objective C

我是C和Objective-C的新手,并且想实现一个类方法来返回满足特定条件的所有对象的NSDictionary,例如本例中所有带星号的文章:

第h条:

@interface Article : NSObject {
    NSString *title;
    BOOL starred;
}
...
+ (NSMutableDictionary*) starredArticles;
@end

我将如何处理? 在Article.m文件中包含静态全局NSMutableArray,然后在构造函数和析构函数中插入/删除?

这不是要走的路-在应用程序中必须有一些包含文章的对象。 是应该返回已加星标的文章的对象-这种类方法现在似乎是一个好主意,但它非常不灵活。

因此,假设您有一个将所有文章存储在NSMutableArray的对象。 然后,您可以使用谓词(请参阅《谓词编程指南》 )仅查找加星标的文章并返回所需的字典。

我将保留特定于该类中某个类的特定实例的代码,以及在管理该对象的控制器中对此类对象的集合进行操作的代码。

换句话说,根据需要创建类并组成实例变量,综合一些访问器方法,编写可能需要与ivars相关的任何其他方法。 然后,在您实际使用/引用这些对象的控制器中,必须具有某种形式的集合(NSMutableArray,NSMutableDictionary,NSMutableSet)来容纳它们。在控制器中,您应实现方法以对加星号进行计数文章。

您可能只会使用该方法来对正在“控制”文章的控制器(其中具有NSMutableArray,NSMutableDictionary或NSMutableSet of Articles)中的已加星标的文章数进行计数,因此在此处实施它是有意义的。 您总是可以实现自己的集合类,该集合类具有用于保存您的文章的集合ivar。 然后您可以在其中实现starredArticles方法,例如addArticle,article,replaceArticle,deleteArticle。

您建议的方法会导致代码非常混乱,并降低代码的可重用性,我个人会尝试避免使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM