我是Objective-C和可可的新手。

在我的UIViewController中,我需要以不同的方法多次访问AppDelegate

A.在每个方法中调用:

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];


消耗更多性能?

B.我试图在UIViewController中创建一个全局参数:

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

@interface Login_ViewController : UIViewController<UITextFieldDelegate,UIImagePickerControllerDelegate>{
  AppDelegate *appDelegate;
}


实施和用法:

- (void)viewDidLoad
{
     appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
     appDelegate.businessId = [businessId integerValue];
}

- (BOOL)credentialsValidated
{
     appDelegate.businessId = [[NSUserDefaults standardUserDefaults] integerForKey:BUSINESS_ID];
}


但是我得到警告(尽管代码有效)

Incompatible integer to pointer conversion assigning to 'NSInteger *' (aka 'int *') from 'NSInteger' (aka 'int');


appDelegate中的businessId声明为:

@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property NSInteger *businessId;


和实现:

@implementation AppDelegate
@synthesize businessId;

最佳答案

从应用程序委托中的声明中删除*

@property NSInteger (assign) businessId;


NSInteger是基元,因此不需要对象指针。

09-15 19:21