当前位置: 代码迷 >> Iphone >> 变量用@property (nonatomic, copy) 定义了,还有必要在@interface 里定义吗? 在这里定义的变量跟@property定义的变解决办法
  详细解决方案

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

热度:162   发布时间:2016-04-25 06:49:27.0
变量用@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
  相关解决方案