没有合适的资源?快使用搜索试试~ 我知道了~
举例讲解Objective-C中@property属性的用法
0 下载量 160 浏览量
2021-01-20
10:10:53
上传
评论
收藏 134KB PDF 举报
温馨提示
试读
5页
学过c/c++的朋友都知道,我们定义struct/class的时候,如果把访问限定符(public,protected,private)设置为public的话,那么我们是可以直接用.号来访问它内部的数据成员的。比如 //in Test.h class Test { public: int i; float f; }; 我在main函数里面是可以通过下面的方式来使用这个类的:(注意,如果在main函数里面使用此类,除了要包含头文件以外,最重要的是记得把main.m改成main.mm,否则会报一些奇怪的错误。所以,任何时候我们使用c++,如果报奇怪的错误,那就要提醒自己是不是把相应
资源推荐
资源详情
资源评论
举例讲解举例讲解Objective-C中中@property属性的用法属性的用法
学过c/c++的朋友都知道,我们定义struct/class的时候,如果把访问限定符(public,protected,private)设置为public的话,那
么我们是可以直接用.号来访问它内部的数据成员的。比如
//in Test.h
class Test
{
public:
int i;
float f;
};
我在main函数里面是可以通过下面的方式来使用这个类的:(注意,如果在main函数里面使用此类,除了要包含头文件
以外,最重要的是记得把main.m改成main.mm,否则会报一些奇怪的错误。所以,任何时候我们使用c++,如果报奇怪的错
误,那就要提醒自己是不是把相应的源文件改成.mm后缀了。其它引用此类的文件有时候也要改成.mm文件)
//in main.mm
Test test;
test.i =1;
test.f =2.4f;
NSLog(@"Test.i = %d, Test.f = %f",test.i, test.f);
但是,在objc里面,我们能不能这样做呢?请看下面的代码:(新建一个objc类,命名为BaseClass)
代码如下:
//in BaseClass.h
@interface BaseClass : NSObject{
@public
NSString *_name;
}
接下来,我们在main.mm里面:
代码如下:
BaseClass *base= [[BaseClass alloc] init];
base.name =@”set base name”;
NSLog(@”base class’s name = %@”, base.name);
不用等你编译,xcode马上提示错误,请看截图:
请大家注意看出错提示“Property ‘nam’ not found on object of type BaseClass*”,意思是,BaseClass这类没有一个名为name
的属性。即使我们在头文件中声明了@public,我们仍然无法在使用BaseClass的时候用.号来直接访问其数据成员。而
@public,@protected和@private只会影响继承它的类的访问权限,如果你使用@private声明数据成员,那么在子类中是无法
直接使用父类的私有成员的,这和c++,java是一样的。
既然有错误,那么我们就来想法解决啦,编译器说没有@property,那好,我们就定义property,请看代码:
代码如下:
//in BaseClass.h
@interface BaseClass : NSObject{
@public
NSString *_name;
}
@property(nonatomic,copy) NSString *name;
//in BaseClass.m
@synthesize name = _name;
现在,编译并运行,ok,很好。那你可能会问了@prperty是不是就是让”.”号合法了呀?只要定义了@property就可以使
用.号来访问类的数据成员了?先让我们来看下面的例子:
代码如下:
@interface BaseClass : NSObject{
@public
NSString *_name;
}
//@property(nonatomic,copy) NSString *name;
资源评论
weixin_38543460
- 粉丝: 6
- 资源: 982
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功