gpt4 book ai didi

objective-c - 具有相同属性的多个自定义对象

转载 作者:行者123 更新时间:2023-11-28 19:20:37 25 4
gpt4 key购买 nike

我有 7 个具有相同属性的自定义对象,createDate 和 modifiedDate。我可以创建一个接受 Object1 但实际上需要所有 7 个对象的方法吗?

现在,这有效:

[self setCreateAndModifiedTimeWithEvent:((Object1 *) object2 
WithCreateDate:[[eventsArray objectAtIndex:i] objectForKey:@"create_date"]
AndModifiedDate:[[eventsArray objectAtIndex:i] objectForKey:@"modified_date"]];

.h文件

-(void) setCreateAndModifiedTimeWithEvent:(Object1 *)object 
WithCreateDate:(NSString *)createStamp
AndModifiedDate:(NSString *)modifiedStamp;

.m文件

-(void) setCreateAndModifiedTimeWithEvent:(Object1 *)object 
WithCreateDate:(NSString *)createStamp
AndModifiedDate:(NSString *)modifiedStamp

{
object.A = @"Hello,";
object.B = @"World";
}

这会减少好的代码行数。

我知道您可以使用 UIView 及其子类执行此类操作。说我有一个

UITextField myTextField. 

我可以

((UIScrollView *)myTextField).tag = 2;

像这样对我的对象进行类型转换有什么内在的坏处还是可以接受的?

最佳答案

就像 Joe 说的,你最好是这样:

@interface DatedObject : NSObject

@property NSDate *createDate;
@property NSDate *modifiedDate;

@end

@implementation DatedObject

@synthesize createDate;
@synthesize modifiedDate;

@end

然后让 7 个类中的每一个都继承自 DatedObject 基类。继承是面向对象编程的基本组成部分,您应该学会(明智地)使用它。

那么你的方法可以是:

-(void) setCreateAndModifiedTimeWithEvent:(DatedObject *)object 
WithCreateDate:(NSString *)createStamp
AndModifiedDate:(NSString *)modifiedStamp;

您也可以使用协议(protocol)来完成此操作,但使用其他类继承的基类的好处是您只需在一个地方实现此功能。如果这 7 个类当前并非都继承自同一个基类(最终将成为 DatedObject 的父类(super class)),则协议(protocol)可能是可行的方法。在这种情况下,您可以像这样声明您的方法:

-(void) setCreateAndModifiedTimeWithEvent:(id<DatedObjectProtocol>)object 
WithCreateDate:(NSString *)createStamp
AndModifiedDate:(NSString *)modifiedStamp;

与您在问题中发布的内容相比,这两种方法的一大优势是您可以从编译器获得更多帮助,以捕捉代码向不响应它的对象发送消息的位置。

关于objective-c - 具有相同属性的多个自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9120358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com