10

我的另一个程序员从网上下载了这段代码

#import "UIImage+Alpha.h"

// Private helper methods
@interface UIImage ()
- (CGImageRef)newBorderMask:(NSUInteger)borderSize size:(CGSize)size;
@end

@implementation UIImage (Alpha)

我收到错误:是什么原因导致 Category 正在实现一个也将由其主类实现的方法?

我在我的整个文件中搜索 newBorderMask 并且这个词只出现了 3 次。

它只声明一次,即

@interface UIImage ()
- (CGImageRef)newBorderMask:(NSUInteger)borderSize size:(CGSize)size;
@end

实施一次即在

#pragma mark -
#pragma mark Private helper methods

// Creates a mask that makes the outer edges transparent and everything else opaque
// The size must include the entire mask (opaque part + transparent border)
// The caller is responsible for releasing the returned reference by calling CGImageRelease
- (CGImageRef)newBorderMask:(NSUInteger)borderSize size:(CGSize)size1 {
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();

并调用了一次

 CGImageRef maskImageRef = [self newBorderMask:borderSize size:newRect.size];

所以没有双重声明。

所以有什么问题。

4

3 回答 3

28

我是代码的原作者,而 Aadhira 的回答是不正确的。此方法的类别名称不应更改为“Alpha”,因为该方法是私有的,而不是扩展的一部分。

要消除警告,最好的解决方法是给私有类别一个唯一的名称,例如“PrivateAlpha”。

有关更多详细信息,请参阅此讨论

于 2012-05-03T18:15:28.940 回答
11

看,当你声明类别时,就像

@interface UIImage ()

但在实现中,它就像

@implementation UIImage (Alpha)

所以声明如下:

@interface UIImage (Alpha)
于 2012-04-18T05:42:22.837 回答
5

我刚刚从我的 .m 文件中删除了这一点:

@interface UIImage ()
- (CGImageRef)newBorderMask:(NSUInteger)borderSize size:(CGSize)size;
@end

LLVM 4.1 编译器似乎不再关心它了。

于 2013-03-05T06:17:46.367 回答