黑马程序员--Objective-C——OC特有语法一

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、@property@synthesize

@property@synthesizeOC的编译器的特性,这两个关键字可以帮助我们自动生成属性的get方法和set方法。

 

<span style="background-color: rgb(255, 255, 255);">#import <Foundation/Foundation.h>
 
@interface Car : NSObject
{
    //int _speed;
    //int _wheels;
}
@property int speed;
@property int wheels;
@end</span>


@property int speed; 这句代码会自动生成属性_speed的声明

<span style="background-color: rgb(255, 255, 255);">- (void)setSpeed:(int)speed;
- (int)speed;</span>

 

<span style="background-color: rgb(255, 255, 255);">#import "Car.h"
@implementation Car
@synthesize speed = _speed;
@synthesize wheels = _wheels;
@end</span>


@synthesize speed = _speed;会自动生成_speedsettergetter实现

相当于

<span style="background-color: rgb(255, 255, 255);">- (void)setSpeed:(int)speed
{
_speed = speed;
}
- (int)speed
{
return speed;
}</span>


需要注意的是,如果在声明中没有这个属性,@synthesize会自动创建对应的以下划线开头的@Private类型的成员变量。如果写成@synthesize speed;,则会访问名字为speed的成员变量。自从XCode4.4以后,@property就包含了synthesize的功能。因此只要在声明中写一个@property int speed;就可完成成员变量_speed的申明与gettersetter的实现。

 

 

二、id

idOC中是一个万能指针,能指向和操作任何OC对象,相当于NSObject *。一般用于OC方法的参数,可以传任何对象进去。

 

三、构造方法

我们之前创建对象时,是使用的new类方法。其实,这个类方法内部调用了两个方法:allocinitalloc为对象分配空间,init执行对象的初始化。

Person *p = [Person new];

等价于

Person *p = [[Person alloc] init];

这个init方法,就是系统默认的构造方法。

我们可以重写这个方法,在创建对象时就会执行我们重写的方法,可以实现一些我们的编程需要。

重写构造方法的格式

<span style="background-color: rgb(255, 255, 255);">- (id)init
{
// 1.需要先执行父类的构造方法,初始化父类中的属性,返回的id对象赋值给当前对象 
self = [super init];
// 2.如果父类初始化成功
if (self != nil)
{
  // 3.执行当前对象的初始化操作
}
// 4.返回初始化完的对象
return self;
}</span>


如果构造方法含有参数,使用initWith... and....

例如initWithName:(NSString *)name andAge:(int)age



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值