我是iOS的初学者,我知道这是基本的问题,但它为我创造了很多困难,并且由于app委托声明而面临几个问题。 这种所有类型的appdelegate声明和声明它们之间有什么区别?
1)当我们将appdelegate声明为此对象时。
//in viewcontroller.h file
#import "AppDelegate.h"
#import "FriendsViewController.h"
#import "XMPPStream.h"
@class AppDelegate;
@interface ViewController :UIViewController<XMPPStreamDelegate,UITextFieldDelegate, UIAlertViewDelegate, UIApplicationDelegate>
{
UIView *padding;
AppDelegate *appdelegate;
}
2)当我们在属性中声明appdelegate时。
//in viewcontroller.h file
@property (weak, nonatomic) AppDelegate *appdelegate;
3)当我们在viewcontroller.m文件中声明appdelegate来制作对象时。
//in viewcontroller.m file
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
4)当我们宣布这样的appdelegate时
// in Viewcontroller.m file
+(AppDelegate *) sharedAppDelegate
{
return (AppDelegate *) [UIApplication sharedApplication].delegate;
}
差异
- (AppDelegate *)appDelegate
{
return (AppDelegate *)[[UIApplication sharedApplication] delegate];
}
我知道这是一个基本问题,但很多像我这样的人都难以申报。
答案 0 :(得分:-2)
第一个一个用于创建类的私有对象。
AppDelegate *appdelegate;
第二个一个用于创建类的公共和全局对象,使用 属性属性 。
@property (weak, nonatomic) AppDelegate *appdelegate;
但前两个只是对象声明 第三,第四和第五是相同的,differance是dot(。)用于getter和setter方法,方括号表示它不是属性,而是它是该类的类方法。 / p>
在声明的对象中,您正在传递appDelegate的实例
第4个案例是class methods
,第5个案例是instance method
AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
//or
AppDelegate *appdelegate = (AppDelegate *) [UIApplication sharedApplication].delegate;