在.h文件的公共接口内声明变量时括号内的内容是什么?你会做这样的事情是什么情况?在我看来,你应该只使这些变量支持的属性公开,并从.h文件中删除变量。
@interface GSFullscreenAdViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
{
/**
* This view controller's view.
*/
GSFullscreenAdView * m_adView;
/**
* The ad that is currently fetched or displaying. Resets to nil on ad dismissal.
*/
GSFullscreenAd * m_currentAd;
/**
* The view controller that this GSFullscreenAdViewController is being
* displayed from.
*/
UIViewController * m_parentViewController;
/**
* Whether the ad is currently displaying
*/
BOOL m_isDisplaying;
/**
* Whether the ad is currently animating onto the screen
*/
BOOL m_isPresenting;
/**
* Whether the ad is in the process of being dismissed
*/
BOOL m_isDismissing;
UIImagePickerController * m_imagePickerController;
}
@property (readonly) GSFullscreenAdView * adView;
@property (readonly) BOOL isDisplaying;
@property (nonatomic) BOOL allowOrientationChange;
答案 0 :(得分:0)
在@implementation
部分声明实例变量的能力实际上是Objective-C的一个相对较新的补充。在Xcode 4.2(2011/10/12发布)之前,您只能在@interface
部分声明实例变量。也许您正在查看的代码是在Xcode 4.2(或更高版本)广泛使用之前编写的。
答案 1 :(得分:0)
现在只要声明一个属性就可以用于大多数情况。对于旧版本的objective-c,必须手动声明相应的iVar。为此,必须在声明属性之前在大括号内声明iVar。
即使在今天,您可能希望将属性与给定的iVar相关联(通过在@synthezise
语句中命名iVar。但是,为此,在{{1}之后的大括号内声明iVar就足够了在这些情况下,您可以在.m文件中的第二个@interface
语句后面括号中声明它们。
嗯,它仍然有效。一些oder教程仍然使用这种模式。您或您的团队/公司可能仍然使用执行此操作的旧代码。
最后,有时候,克服一个古老的特点很难:-)