gpt4 book ai didi

objective-c - 将同一类别添加到多个类

转载 作者:IT王子 更新时间:2023-10-29 08:06:40 26 4
gpt4 key购买 nike

我有一个 Objective-C 类别,我想将其添加到多个类中而不复制该类别中包含的代码。我只是想将相同的方法添加到多个类。

我在 NSManagedObject 子类(BookChapterPage)上有现有类别,我想以干净且可维护的方式在这些子类中添加通用功能。

一种方法是将类别添加到它们的公共(public)父类(super class) (NSManagedObject),但这会在我需要时将类别的方法添加到所有 NSManagedObject 子类将方法添加到三个 NSManagedObject 子类(BookChapterPage)。

另一种解决方案是继承 NSManagedObject,然后让 BookChapterPage 继承自它NSManagedObject 子类。这是最干净、最直接的方法。这种方法的一大缺点是当数据模型发生变化并且 Xcode 重新生成子类时,它会将它们重置为继承自 NSManagedObject 而不是 SubclassedManagedObject。如果可能的话,我想避免使用像 mogenerator/Xmo'd 这样的东西。

是否可以在不重复代码的情况下在多个类上添加单个类别?

谢谢。

最佳答案

也许为时已晚..但也许有一种方法可以做到..但是,你说..需要有相同的父类(super class)

类别.h

@protocol MyProtocol <NSObject>
- (NSString*)foo;
@end

@interface NSArray (category) <MyProtocol> @end
@interface NSString (category) <MyProtocol> @end

类别.m

@interface NSObject (category) <MyProtocol> @end
@implementation NSObject (category)
- (NSString*)foo
{
return @"bar";
}
@end

我也不喜欢这个,但它有效

关于objective-c - 将同一类别添加到多个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9450556/

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