一个文件中不同类型的多个接口声明

时间:2014-08-22 16:08:45

标签: objective-c

我正在尝试添加多个接口声明,但没有达到很远。我想我可能会得到错误的语法,但我已经尝试了几次,它会在错误消息后通过错误消息转移我。这是头文件的内容。

#import <UIKit/UIKit.h>

@interface AGDWTiledImageView : UIView

- (UIImage *)imageRotatedByDegrees:(CGFloat)degrees;
- (id)initWithFrame:(CGRect)frame tileset: (NSString *)tileset;

@end

非常感谢任何帮助。

编辑:抛出错误消息的代码是

的最后一行
for (int row = firstRow; row <= lastRow; row++) {
        for (int col = firstCol; col <= lastCol; col++) {
            UIImage *tile;
            UIImage *rotatedImage = [tile imageRotatedByDegrees:270.0];

错误消息显示“UIImage没有可见的@interface声明选择器imageRotatedByDegrees”

1 个答案:

答案 0 :(得分:1)

您的问题中的代码毫无意义:

        UIImage *tile;
        UIImage *rotatedImage = [tile imageRotatedByDegrees:270.0];

首先,您将tile声明为指向UIImage的指针。由于您没有明确地为其赋值,因此它已初始化为nil。您可能希望将其指向UIImage的某个实际实例,但我不知道您希望它指向哪个图像。

然后您尝试向其发送imageRotatedByDegrees:消息。但是没有为UIImage声明该消息。它仅针对AGDWTiledImageView声明。

如果您希望UIImage了解名为imageRotatedByDegrees:的邮件,则可以在UIImage上声明类别。最好在类别选择器上添加前缀,以避免与其他类别或Apple未来的类扩展冲突。 (选择器是消息/方法名称。)

// UIImage+AGDW.h

#import <UIKit/UIKit.h>

@interface UIImage (AGDW)

- (UIImage *)AGDW_imageRotatedByDegrees:(CGFloat)degrees;

@end

// UIImage+AGDW.m

@implementation UIImage (AGDW)

- (UIImage *)AGDW_imageRotatedByDegrees:(CGFloat)degrees {
    // your implementation here
}

然后,在您要使用AGDW_imageRotatedByDegrees:的文件顶部,您必须#import "UIImage+AGDW.h"