Sag*_*agi 2 iphone objective-c nsmutablearray ios
我想创建自己的自定义对象NSMutableArray:
@interface Course : NSObject {
NSString *className;
NSString *classGrade;
NSInteger creditHours;
}
Run Code Online (Sandbox Code Playgroud)
这个类将存储一系列课程:
@interface AllCourses : NSObject : NSMutableArray{
NSMutableArray *arrClasses;
}
Run Code Online (Sandbox Code Playgroud)
我希望"AllCourses"继承自NSMutableArray,所以我可以像任何其他NSMutableArray对象一样使用它,并从中添加\ remove课程并将其加载到tableView等...所以我的问题是,如果你会这么善良,是我对"AllCourses"的实现应该是什么样的?
首先.如果要扩展类,则需要执行以下操作:
@interface YourCustomClass : SuperClass
Run Code Online (Sandbox Code Playgroud)
以这种方式YourCustomClass继承你的属性和/或方法SuperClass.
关于您的问题,Apple doc在NSMutableArray类参考中说
通常没有理由继承NSMutableArray.该类完成了它的设计目的 - 维护一个可变的,有序的对象集合.
您可以在此stackoverflow主题中找到相同的建议:should-i-subclass-the-nsmutablearray-class.
如果你想继承子类NSMutableArray,请参阅第一个链接(NSMutableArray类参考).您必须覆盖5个方法(请参阅Ovveride方法一节).
在我看来,你可以用NSMutableArray传统的方式:创建一个NSMutableArray实例并向其添加对象(这里是一个简单的例子).
NSMutableArray *myArray = [[NSMutableArray alloc] init];
NSNumber *myNumber = [NSNumber numberWithInt:2];
[myArray addObject:myNumber];
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你.
编辑
要覆盖方法,请在.m文件中插入该方法并在其中添加一些逻辑.例如(这里只是伪代码):
//.h
@interface YourClass: NSMutableArray
@end
//.m
@implementation YourClass
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index
{
// your logic here
}
// do the same for other ones
@end
Run Code Online (Sandbox Code Playgroud)
但是,我再次建议你找到一种不同的方法来实现它,因为在这种情况下扩展一个NSMutableArray类并获得一个像原始类一样的全功能类非常困难.
替代方案是:
NSMutableArray实例变量)最后,我还建议您阅读以下讨论:why-doesnt-my-nsmutablearray-subclass-work-as-expected.特别是,你必须注意到这一点
通常,您倾向于将系统类子类化为比C#或Java更少的子类.
如斯蒂芬达林顿说.
| 归档时间: |
|
| 查看次数: |
3560 次 |
| 最近记录: |