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说明下的呢??
展开
 我来答
luckydog6132
2013-08-14 · TA获得超过271个赞
知道答主
回答量:136
采纳率:0%
帮助的人:84.7万
展开全部
大括号中声明的是“成员变量”
@property声明的是“属性”,即可以在实例方法中用“self。属性名”调用,外部也可以调用
@synthesize意义是“合成”,现在已经不常用了,以前申明了属性以后会自动添加一个加下划线的成员变量的,比如你上面的@property (nonatomic, retain) NSURL * url;如果你不在大括号中写NSURL * url;然后你可以通过_url来访问这个值,而url是不存在的变量
@synthesize另外一个作用是声明“别名”,新手就不用理解了,会更加混乱
追问
1.0 就按照上图的代码来看,类内没有声明与类内声明了到底有什么区别的啊?? 
2.0 什么时候不用在类内定义成员变量,什么时候需要在累内定义成员变量呢??
追答
只是一个习惯问题吧,我朋友有些写有些不写,我比较偷懒,一般不声明成员变量,用到的全部都是属性,属性有一个隐藏的好处,retain的属性用的时候会帮你管理内存,具体的管理方式,你还要多看看官方的文档
_炫武_
2013-08-13
知道答主
回答量:33
采纳率:0%
帮助的人:11.7万
展开全部
使用@property @synthesize 是为了更好地内存管理,比如 @property (nonatomic, retain) Setting * settingObj; 在.m文件中你就可以使用self.settingObj =.. 变量的set get 方法已经写好。 请采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式