A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沐小妖mavs 中级黑马   /  2015-12-3 22:25  /  1033 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

点语法
1 ,直接用对象的指针名.(去掉get或set)的方法名
2 ,前提:成员变量的get方法,不再需要get,但set方法保持不变.

本质:
!!!点语法本质还是方法调用,去调用类中定义的set get方法(get方法不需要前面+get);
点语法Xcode编译器的一个功能,本质上还是调用方法.
提供一种更方便的方式提供属性

两个要注意的方法
1 不能在set或get方法里用点语法调用自己.否则会出现死循环

2 点语法可以调用普通方法,只要符合规则。但是不要这么做,一般只用来调用属性

属性(成员变量)的作用域
是由权限修饰符控制的
公共的    框架的   受保护的   私有的
public>package>protected> private

@public:代表在任何地方都能通过对象直接访问.对象名->属性名
@protected :只能在本类和子类中直接访问,在外部访问需要定义setger方法去访问
@private:只能在本类直接访问,在子类和外部都不能访问,只能通过setget方法访问
@package:表示只能在框架中访问,权限是介于public与protected之间的

留空表什么都不写:
1,如果上面有属性,则跟随上一个属性
2,如果上面没有别的属性,默认是@protected

注意的问题:
一个类只有实现是可以的,能够创建对象并使用,但只有声明是不行的。且也能定义属性,但属性默认的权限默认修饰符是private。但是一般不要这么做,一个类定义的时候应该声明,实现都要定义.

@property的用法
作用:能够自动生成属性的set与get声明和实现
@property NSString*name(不用+_线,因为编译器在自动创建属性的时候自动生成);
等效于:
1 检测有没有一个NSString*_name;如果没有自动创建:自动生成的属性是private(所以属性在我们由需求的时候,则重写自己加上需要的权限)
2 检测有没有给-name设计与get与set声明,如果没有,按标准形式设置
   -(void)setName:(NSString*)name;
  -(NSString*)name;
3 检测有没有给_那么的set与get声明做实现,如果没有,则按标准形式自动生成
  -(void)setName:(NSString*)name{
_name=name;
}
-(NSString*)name{
return _name;
}

注意:
1 如果手动创建的标准格式set与get方法,则property不会再自动生成
2 如果,属性的set与get方法的实现全部手动按标准格式生成,则这个属性将不会再创建
@synthesize name=_name;
等效于set与get实现;
在4.4之前的Xcode中用于跟property配合使用的,用来生成一个属性的set与get实现

id指针的用法
是一个指针,这个指针的类型是id指针
作用:
可以表示任意的oc对象的指针——万能指针,等效于:NSObject *
注意:
1 ,id不用加*,其力 main已经封装好了.相当于id==NSObject*
2,访问指向类对象的独有方法时,必须要强转
好处:
扩展性很强
如:当一个对象的类型不确定时,或一个指针指向的对象类型有多种时,id可使用

id可以指向任意对象———百变金刚

1 个回复

倒序浏览
不错的总结,支持一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马