首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Iphone >

变量用@property (nonatomic, copy) 定义了,还有必要在@interface 里定义吗? 在这里定义的变量跟@property定义的变解

2012-02-19 
变量用@property (nonatomic, copy) 定义了,还有必要在@interface 里定义吗? 在这里定义的变量跟@property

变量用@property (nonatomic, copy) 定义了,还有必要在@interface 里定义吗? 在这里定义的变量跟@property定义的变
变量用@property (nonatomic, copy) 定义了,还有必要在@interface 里定义吗?  

@interface MapLocationInfo : UIViewController
{
  NSString *lat;//经度 变量用@property (nonatomic, copy) 定义了,还有必要在@interface 里定义吗? 在这里定义的变量跟@property定义的变量有什么区别?

}

@property (nonatomic, copy) NSString *lat;//经度


@end

[解决办法]
@interface中也要定义的,interface中定义的是类中的成员,而@property (nonatomic, copy) NSString *lat;//经度,这个是表明这个属性(nonatomic非原子是为了表示当前对象是在一个线程中跑的,这样可以节省资源;copy表示该属性会自动copy赋值的对象),与@synthesize配对使用可以让编译器自动生成类似java中的get和set方法。
[解决办法]
@interface MapLocationInfo : UIViewController
{
//定义变量
}
//定义方法

@end

完全两个东西。
[解决办法]
这个问题将在IOS SDK5中得到很好的解决,在IOS SDK5中,变量可以只在@property中定义,并且新增新的属性,strong。
而且IOS SDK5 提供ARC支持,以后写OC程序就不用担心内存问题了。

不过如果你现在还是在用SDK4或者更低版本的话,那就必须在Interface中申明了。

(注:虽然苹果现在已经提供了SDK5的下载使用,但是目前APPStore还不支持提交基于SDK5的应用程序)
[解决办法]
如果两地方的名字是一样的,那就不需要了,如果不一样,那就需要两外都要写。
[解决办法]
只在property中申明的调用时要用self.lat

热点排行