oc中关于property和synthesize

新手,大神指教!

昨天学习了类的声明和成员变量的定义,初始化。我们发现对象的创建和使用是很麻烦的,而且,成员变量我们得声明@public,这对我们的类是不安全的。

设置器getter是用来取值,访问器setter是用来赋值,通过get和set来操作对象是很麻烦的

我们通过声明属性@property和实现文件中的@synthesize结合来完成setter和getter方法的创建。

一   已经创建号类Student1


1⃣类的名首字母大写,大括号内是成员变量的声明(其实根本不需要声明了,可以直接删除大括号及其内);

2⃣@property (retain,nonatomic)NSString *name;这条语句是声明属性name,是之前学的set语句的简化

//-(void) setName:(Nsstring*) newname
//-(Nsstring) name;


如果我们删掉大括号,属性声明后,笔者认为系统已经产生了成员,例如_age


我把@synthesize注释掉,发现age提示错误,如果成_age,编译通过。顺便提示下,大括号内标准的成员声明应该是

NSString *_name这种格式


setName是一个函数,它的作用就是赋值。用冒号来表示它参数(int) newname。一会main函数里会调用这个函数,请注意。

另外三条语句雷同。

有了属性的声明就该有东西来实现它




@synthesize的作用就是,通知编译器自动为我们创建setter和getter方法

比如@synthesize name就跟下面的语句功能相同

-(void) setName:(Nsstring*) newname

{name=newname;}//用函数setName赋值

-(Nsstring*)name

{return name;}
我们也可以写成@synthesize name=name,address=address,age=age,hobby=hobby;

有了声明跟实现,我们就该调用



输出结果是

我们注意到boy.age=24和[boy setHobby:@弹棉花"]两种方法都可以赋值

其实boy.age不是结构体的调用成员变量,点在这里是调用set方法(文章开头已经提到后面会调用),就跟[boy setHobby:@弹棉花"]一样,


最后我们发现@property和@synthesize更简洁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值