IOS开发 声明变量问题
@interfaceAppDelegate_Shared:NSObject<UIApplicationDelegate>{UIWindow*window;BOOLisiP...
@interface AppDelegate_Shared : NSObject <UIApplicationDelegate> {
UIWindow *window;
BOOL isiPhone5;
BOOL hasUnlockedSkins;
NSMutableArray *recorddisplayDate;
@private
NSManagedObjectContext *managedObjectContext_;
NSManagedObjectModel *managedObjectModel_;
NSPersistentStoreCoordinator *persistentStoreCoordinator_;
Setting * settingObj;
CGSize kTileSize;
NSURL * url;
}
@property (nonatomic, retain) NSURL * url;
@property (nonatomic, assign) CGSize kTileSize;
@property (nonatomic, retain) Setting * settingObj;
@property (nonatomic, retain) IBOutlet UIWindow *window;
…………
代码如上图,问下大家,为什么在类内已经声明了一些变量,在类外还要继续声明一次的呢?? 像url kTileSize这样的一些变量。。。 还有这些变量在.m 里为什么也要用这个关键字@synthesize说明下的呢?? 展开
UIWindow *window;
BOOL isiPhone5;
BOOL hasUnlockedSkins;
NSMutableArray *recorddisplayDate;
@private
NSManagedObjectContext *managedObjectContext_;
NSManagedObjectModel *managedObjectModel_;
NSPersistentStoreCoordinator *persistentStoreCoordinator_;
Setting * settingObj;
CGSize kTileSize;
NSURL * url;
}
@property (nonatomic, retain) NSURL * url;
@property (nonatomic, assign) CGSize kTileSize;
@property (nonatomic, retain) Setting * settingObj;
@property (nonatomic, retain) IBOutlet UIWindow *window;
…………
代码如上图,问下大家,为什么在类内已经声明了一些变量,在类外还要继续声明一次的呢?? 像url kTileSize这样的一些变量。。。 还有这些变量在.m 里为什么也要用这个关键字@synthesize说明下的呢?? 展开
2个回答
展开全部
大括号中声明的是“成员变量”
@property声明的是“属性”,即可以在实例方法中用“self。属性名”调用,外部也可以调用
@synthesize意义是“合成”,现在已经不常用了,以前申明了属性以后会自动添加一个加下划线的成员变量的,比如你上面的@property (nonatomic, retain) NSURL * url;如果你不在大括号中写NSURL * url;然后你可以通过_url来访问这个值,而url是不存在的变量
@synthesize另外一个作用是声明“别名”,新手就不用理解了,会更加混乱
@property声明的是“属性”,即可以在实例方法中用“self。属性名”调用,外部也可以调用
@synthesize意义是“合成”,现在已经不常用了,以前申明了属性以后会自动添加一个加下划线的成员变量的,比如你上面的@property (nonatomic, retain) NSURL * url;如果你不在大括号中写NSURL * url;然后你可以通过_url来访问这个值,而url是不存在的变量
@synthesize另外一个作用是声明“别名”,新手就不用理解了,会更加混乱
追问
1.0 就按照上图的代码来看,类内没有声明与类内声明了到底有什么区别的啊??
2.0 什么时候不用在类内定义成员变量,什么时候需要在累内定义成员变量呢??
追答
只是一个习惯问题吧,我朋友有些写有些不写,我比较偷懒,一般不声明成员变量,用到的全部都是属性,属性有一个隐藏的好处,retain的属性用的时候会帮你管理内存,具体的管理方式,你还要多看看官方的文档
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询