1

在我正在构建的 iOS 应用程序中,我目前正在管理一个对象列表(任务),方法是使用一个 NSMutableArray,其中包含每个单独任务的多个 NSMutableDictionary 对象。

我现在想将我为管理这些任务而编写的逻辑封装在一个或多个自定义类中。

以下是我正在考虑的几个选项:

  1. 创建一个名为 TaskManager 的新类,它在内部使用上述类并公开添加、删除、更新、重新排序等必要的方法。

  2. 创建两个类——Task 和 TaskList——分别继承自 NSMutableDictionary 和 NSMutableArray

  3. 创建两个类——Task 和 TaskList——它们继承自 NSObject 但在内部使用其他类来存储数据

我以前做过一些 C# 开发,但我很想得到一些建议,说明哪种方法在 Objective C 中最好。

4

2 回答 2

2

我建议选项4:

  • 一个在内部使用 NSMutableArray 的类 TaskList
  • 使用属性但没有 NSMutableDictionary 的类 Task

或者你有什么理由想要使用字典?如果您使用常规课程,您将获得类型安全(以及更好的性能)。

于 2013-04-11T09:43:36.880 回答
0

如果我愿意在你的地方,我将创建一个自定义类,它封装了如下所示的类。

任务管理器.h

#import <Foundation/Foundation.h>

@interface TaskManager : NSObject

@property(nonatomic,retain)NSMutableArray *taskList;

-(void)addTaskList:(NSMutableDictionary *)object;

@end


@interface Task : NSObject

@property(nonatomic,retain)NSMutableDictionary *taskDetails;

-(void)setTaskDetailsWithKey:(NSString*)key withValue:(NSString*)value;

@end

任务管理器.m

#import "TaskManager.h"

@implementation TaskManager
@synthesize taskList;

-(id)init
{
    self = [super init];
    if (self) {
        if(!taskList)
            taskList = [[NSMutableArray alloc] init];
    }
    return self;
}

-(void)addTaskList:(NSMutableDictionary *)object
{
    [taskList addObject:object];
}

@end

@implementation Task

@synthesize taskDetails;

-(id)init
{
    self = [super init];
    if (self) {
        if(!taskDetails)
            taskDetails = [[NSMutableDictionary alloc] init];
    }
    return self;
}


-(void)setTaskDetailsWithKey:(NSString*)key withValue:(NSString*)value
{
    [taskDetails setObject:value forKey:key];
}

@end
于 2013-04-11T09:51:07.220 回答