OC基础day5-点语法、property、编译器指令、id万能指针、类与类的判断、判断对象是否响应指定的方法、判断类中是否有这个方法、参数方法与响应、构造方法、synthesize

点语法

点语法本质上是调用方法,类似于setAgeAge方法

对象名.属性名(没有下划线) = [对象名 set属性名];

如何区分点语法是set还是get,需要赋值就是set位于等号左边,需要获取值就是get位于等号右边

getset方法里用self.属性名 会造成死循环。就是相当于这个方法里调用这个方法


编译器指令:编译阶段帮你处理


@property

Xcode 4.4版本前,@property只能声明,需要与@synthesize配合使用

@property 类型  (去掉下划线的属性名)方法名

声明setget方法

加了下划线 setget中就多了下划线,如: set_XXX

Xcode4.4版本后,@property增强,只需写一个@property就可完成声明,实现,与定义。

@property增强的格式:@property 类型 方法名(去掉下划线的属性名)

生成的是带下划线的属性

同类型的也可以写在一起,如@property int age,sex;

生成的属性在.m文件中,子类可以继承但无法直接访问的属性。

如果要声称在.h文件中,则先在.h文件中进行声明,它会先调用.h中声明的属性。

如果要设置setget条件,就重写setget方法,不允许setget都重写,只能重写一个。


id 万能指针

只能指向OC对象,系统编译的时候不会检测。


类与类的判断

返回值布尔类型

判断实例对象是否是这个类或这个子类的实例对象 [实例对象名 isKindOfClass:[类名 class]];

判断是否是指定类的实例  [实例对象名 isMemberOfClass:[类名 class]];

判断类是否是指定类的子类   [[类名 Class] isSubclassOfClass:[另一个类名 class]];


判断对象是否响应指定的方法

返回值是个布尔类型

SEL s =@selector(方法名);

[类名 respondsToSelector: s];

先把方法装饰成SEL类型,再通过respondsToSelector来判断此类里是否有这个方法


判断Car类中是否有stop这个对象方法

返回值是布尔类型

SEL  stop = @selector(stop);

[Car instancesRespondToSelector:stop];


响应无参数的方法

[对象名 performSelector:SEL];

响应一个参数的方法

[对象名 performSelector:SEL withObject:调用的方法的参数] 

响应两个参数的方法

[对象名 performSelector:SEL withObject:调用的放法的参数 withObject:调用的方法的参数];

SEL即为对象方法。

先用SEL 对象方法名=@selector(对象方法名); 包装一下对象方法


构造方法

用来给对象的属性初始化值得方法,是一个对象方法。

固定格式:if(self=[super init]){ };return self;

父类如何初始化,此类也要如此初始化。如要修改在大括号里修改。

自定义构造方法

1.一定是对象方法

2.返回值一定是instancetype类型

3.名字统一为Init

[person alloc]时就已经创建好了一个对象,并初始化值。

init是一个对象方法,负责再次初始化。

所以初始化时还有其他方法可以再次初始化,如:-(instanceType)initWithName:(NSString*)name{ },即自定义构造方法

可以在自定义构造方法中调用init方法。


@synthesize

Xcode4.4版本之后,@property就包含了此方法。

@synthesize (去掉下划线的属性名)方法名

实现setget方法

因为property已经声明了类型,所以他直接用来实现

对于@synthesize age;而言,@synthesize在实现时自动生成一个int类型的age,如果我们已经声明了则直接使用我们声明的age。所以写成如:@synthesize age = _age,等号后是我们要用的属性。则此时没有age属性了。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值