Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa touch 以.m而不是.h导入iAd_Cocoa Touch_Delegates_Iad - Fatal编程技术网

Cocoa touch 以.m而不是.h导入iAd

Cocoa touch 以.m而不是.h导入iAd,cocoa-touch,delegates,iad,Cocoa Touch,Delegates,Iad,是否有任何方法可以导入.m文件而不是.h文件?问题是,我需要在.h文件中指定视图控制器是ADBannerViewDelegate,如果在.m文件中导入了iAd,它将无法识别。 是否有办法解决这个问题,还是每次导入视图控制器时都必须导入iAd?是的。您可以将所有iAd代码放入.m文件中;您只需要使用一个非常常见的类扩展。类扩展,允许您声明变量,包括委托,创建属性等。所有这些都来自.m文件 类扩展位于.m文件顶部附近,在@implementation语句之前 例如: //.h #import <

是否有任何方法可以导入.m文件而不是.h文件?问题是,我需要在.h文件中指定视图控制器是ADBannerViewDelegate,如果在.m文件中导入了iAd,它将无法识别。
是否有办法解决这个问题,还是每次导入视图控制器时都必须导入iAd?

是的。您可以将所有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

如果查看项目文件,在“支持文件”下,您应该会看到项目名称前缀.pch

始终包含头.h而不是实现文件.m。在您使用的每个视图控制器中导入它。这似乎是可行的。谢谢那么,有没有任何理由将协议放在.h文件中?很高兴它起到了作用。我不想说永远没有任何理由把协议放在.h文件中,但是自从创建了类扩展之后,我想不出一个实例。实际上,对于类扩展,我发现对.h文件的需求最小——公共变量除外。
#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