下载此文档

objectivec的property详解.doc


文档分类:外语学习 | 页数:约14页 举报非法文档有奖
1/14
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/14 下载此文档
文档列表 文档介绍
objectivec的***@property详解
Objective-c的***@property 详解
    之前很多网友对我翻译的教程中的Property的使用感到有些迷惑不解,搞不清楚什么时候要release, = nil;同时对于Objective-c的内存管理以及cocos2d的内存管理规则不够清楚。本文主要讲解objc里面***@property,它是什么,它有什么用,atomic,nonatomic,readonly,readwrite,assign,retain,copy,getter,setter这些关键字有什么用,什么时候使用它们。至于Objc的内存管理和cocos2d的内存管理部分,接下来,我会翻译Ray的3篇教程,那里面再和大家详细讨论。今天我们的主要任务是搞定***@property。
  学过c/c++的朋友都知道,我们定义struct/class的时候,如果把访问限定符(public,protected,private)设置为public的话,。比如
//in
class Test
{
public:
int i;
float f;
};
  我在main函数里面是可以通过下面的方式来使用这个类的:(注意,如果在main函数里面使用此类,除了要包含头文件以外,,否则会报一些奇怪的错误。所以,任何时候我们使用c++,如果报奇怪的错误,。)
  //in
Test test;
=1;
=;

NSLog(@" = %d, = %f",, );
  但是,在objc里面,我们能不能这样做呢?请看下面的代码:(新建一个objc类,命名为BaseClass)
//in
***@interface BaseClass : NSObject{
***@public
NSString *_name;
}
 接下来,:
BaseClass *base= [[BaseClass alloc] init];
=@"set base name";
NSLog(@"base class's name = %@", );
  不用等你编译,xcode4马上提示错误,请看截图:
  请大家注意看出错提示“Property 'nam' not found on object of type BaseClass*",意思是,BaseClass这类没有一个名为name的属性。即使我们在头文件中声明了***@public,。而***@public,***@protected和***@private只会影响继承它的类的访问权限,如果你使用***@private声明数据成员,那么在子类中是无法直接使用父类的私有成员的,这和c++,java是一样的。
  既然有错误,那么我们就来想法解决啦,编译器说没有***@property,那好,我们就定义property,请看代码:
//in
***@interface BaseClass : NSObject{
***@public
NSString *_name;
}
***@property(nonatomic,copy) NSString *name;
//in
***@synthesize name = _name;
  现在,编译并运行,ok,很好。那你可能会问了***@prperty是不是就是让”."号合法了呀?只要定义了***@?先让我们来看下面的例子:
***@interface BaseClass : NSObject{
***@public
NSString *_name;
}
//***@property(nonatomic,copy) NSString *name;-(NSString*) name;
-(void) setName:(NSString*)newName;
  我把***@property的定义注释掉了,另外定义了两个函数,name和setNa

objectivec的property详解 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数14
  • 收藏数0 收藏
  • 顶次数0
  • 上传人好用的文档
  • 文件大小35 KB
  • 时间2021-07-26