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