我是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
是基元,因此不需要对象指针。