#import iAd in .m而不是.h

时间:2013-07-15 04:15:37

标签: cocoa-touch delegates iad

.m文件中有#import而不是.h文件吗?问题是我需要指定视图控制器是.h文件中的ADBannerViewDelegate,如果在.m文件中导入iAd,它就无法识别。 有没有办法解决这个问题,或者每次#import查看控制器时我是不是必须iAd #import

1 个答案:

答案 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