.m文件中有#import
而不是.h文件吗?问题是我需要指定视图控制器是.h文件中的ADBannerViewDelegate
,如果在.m文件中导入iAd
,它就无法识别。
有没有办法解决这个问题,或者每次#import
查看控制器时我是不是必须iAd
#import
?
答案 0 :(得分: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的文档在进一步解释类扩展方面做得很好。检查出here。
另外值得注意的是,您的项目会自动创建一个名为“预编译标题”的特殊文件。此文件是您可以导入要在整个项目中使用的其他类的位置,因此您无需在每个类中手动导入它们。
以下是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
如果您查看项目文件,请在支持文件下,看到You-Project-Name-Prefix.pch