Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone “放在哪里?”;额外的;实施_Iphone_Objective C_Objective C Category - Fatal编程技术网

Iphone “放在哪里?”;额外的;实施

Iphone “放在哪里?”;额外的;实施,iphone,objective-c,objective-c-category,Iphone,Objective C,Objective C Category,有时我会看到代码片段为对象创建新方法,如下所示: @implementation UIImage (Extras) - (void)aMethod:(id)anObject { // some functionality } @end 我应该把代码放在哪里?我是否把它放在我目前正在编写代码的类中?如果是这样的话,我需要在代码中的哪一点上写这个 谢谢。这是一个被称为“类别”的Objective-C功能。有关更多信息,请参阅以下文章: 这是一个称为“类别”的Objective-C功能

有时我会看到代码片段为对象创建新方法,如下所示:

@implementation UIImage (Extras)

- (void)aMethod:(id)anObject {
  // some functionality
}

@end
我应该把代码放在哪里?我是否把它放在我目前正在编写代码的类中?如果是这样的话,我需要在代码中的哪一点上写这个


谢谢。

这是一个被称为“类别”的Objective-C功能。有关更多信息,请参阅以下文章:


这是一个称为“类别”的Objective-C功能。有关更多信息,请参阅以下文章:


为了简单和保持代码干净,我通常将类类别放在单独的文件中


但一般来说,我认为您只需要在某个标题中声明您的类别,然后导入它,让编译器知道您添加的方法。这些方法的实现可以放在任何(实现)文件中,但我再次认为最好将其放在单独的位置。

为了简单和保持代码干净,我通常将类类别放在单独的文件中


但一般来说,我认为您只需要在某个标题中声明您的类别,然后导入它,让编译器知道您添加的方法。这些方法的实现可以放在任何(实现)文件中,但我再次认为最好将其放在单独的位置。

您可以将此类别代码放在任何您喜欢的地方。一般来说,此代码应该位于名为UIImage+Extras.m的文件和匹配的头文件UIImage+Extras.h

您可以将此类别代码放在任何您喜欢的地方。通常,此代码应该位于名为UIImage+Extras.m的文件和匹配的头文件UIImage+Extras.h

中。。。因此,只需将其添加到这些文件中,并将其作为正常导入即可:)这么简单?太棒了。我想知道这个常用成语的价值。为什么不把你的方法放在一个叫做UIImageExtras的助手类中,而不包含任何类别呢。除了保存和导入助手类,该类别还能为您带来什么?该类别的缺点是显而易见的:如果您添加的是一个普通名称,那么您可能会与UIImage类中的未来更改发生冲突,或者更可能的是,在您包含其他人的库时与其他人的类似类别发生冲突(因为他们阅读了相同的文章)。我错过的最大优势是什么?这是一种优雅的方法。您可以直接对对象调用方法。助手类不过是静态函数的容器。它们是可以的,但却带走了面向对象编程的许多魅力。我的观点是:如果您正在处理一个对象,请使用category;如果您正在处理一个对象,请使用helper类。类别也可以很好地处理子类。至于名称冲突,在方法名称前加前缀可能是个好主意。谢谢大家。。。因此,只需将其添加到这些文件中,并将其作为正常导入即可:)这么简单?太棒了。我想知道这个常用成语的价值。为什么不把你的方法放在一个叫做UIImageExtras的助手类中,而不包含任何类别呢。除了保存和导入助手类,该类别还能为您带来什么?该类别的缺点是显而易见的:如果您添加的是一个普通名称,那么您可能会与UIImage类中的未来更改发生冲突,或者更可能的是,在您包含其他人的库时与其他人的类似类别发生冲突(因为他们阅读了相同的文章)。我错过的最大优势是什么?这是一种优雅的方法。您可以直接对对象调用方法。助手类不过是静态函数的容器。它们是可以的,但却带走了面向对象编程的许多魅力。我的观点是:如果您正在处理一个对象,请使用category;如果您正在处理一个对象,请使用helper类。类别也可以很好地处理子类。至于名称冲突,最好在方法名称前加前缀。