1

有没有办法#import 在 .m 文件而不是 .h 文件中?问题是我需要在 .h 文件中指定视图控制器是 a ,如果在 .m 文件中导入ADBannerViewDelegate它,它就无法识别。iAd有什么办法可以解决这个问题,还是#import iAd每次我#import使用那个视图控制器时我都不得不这样做?

4

1 回答 1

0

是的。您可以将所有 iAd 代码放入.m文件中;您只需要使用类扩展(非常常见)。类扩展,允许您从文件中声明变量、包含委托、创建属性等.m

.m类扩展位于文件顶部附近,位于@implementation语句之前。

例如:

//.h
#import <UIKit/UIKit.h>
@interface HomeViewController : UIViewController
@end


//.m
#import "HomeViewController.h"
#import <iAd/iAd.h>

//The following is the class extension
@interface HomeViewController () <ADBannerViewDelegate> //add any delegates here {
    IBOutlet ADBannerView *ad;  //A reference to the ad
    BOOL someBOOL;              //You can put any variables here
}
- (void)someMethod:(id)sender;
@property (nonatomic, strong) UIView *someView;
@end

注意:类扩展必须以 结尾@end,然后是常规类主体:@implementation HomeViewController...

Apple 的文档在进一步解释类扩展方面做得很好。在这里查看它们。


另外值得注意的是,您的项目会自动创建一个特殊文件,称为“预编译头文件”。该文件是您可以导入您打算在整个项目中使用的其他类的地方,因此您不必在每个类中手动导入它们。

以下是 PCH 的示例:

#import <Availability.h>

#ifndef __IPHONE_5_0
#warning "This project uses features only available in iOS SDK 5.0 and later."
#endif

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
    #import <iAd/iAd.h>
    //Put any other classes here and you can use them from any file
#endif

如果您查看您的项目文件,在 Supporting Files 下,您应该看到You-Project-Name-Prefix.pch

于 2013-07-15T04:32:51.703 回答