我的其他程序员从网上下载此代码
#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];
所以没有双重声明。
那是什么问题。
答案 0 :(得分:27)
我是code的原作者,而Aadhira的回答是不正确的。此方法的类别名称不应更改为“Alpha”,因为该方法是私有的,而不是扩展的一部分。
要摆脱警告,最好的解决方法是为私人类别指定一个唯一的名称,例如“PrivateAlpha”。
有关详细信息,请参阅this discussion。
答案 1 :(得分:10)
请注意,在声明类别时,它就像
@interface UIImage ()
但在实施中,它就像
@implementation UIImage (Alpha)
所以声明如下:
@interface UIImage (Alpha)
答案 2 :(得分:5)
我刚从我的.m文件中删除了这一部分:
@interface UIImage ()
- (CGImageRef)newBorderMask:(NSUInteger)borderSize size:(CGSize)size;
@end
LLVM 4.1编译器似乎不再关心它了。