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

LLVM4.1コンパイラはもう気にしていないようです。

于 2013-03-05T06:17:46.367 に答える