------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
---------------------------》》》》对面向对象的一些思考 好文章
我们的主函数发一个消息给一个对象,这个对象获取到消息后执行相应的程序,这些程序会发消息给其他对象,指挥(或者不说指挥吧,毕竟不是从主的关系,就好像老板布置任务,员工们互相配合,互相整合工作成果)其他对象工作,这样好像这些对象真的是个“实体”,他们虽然只是整个程序的小小一部分,但是却可以自动完成工作转接,完成自己能完成的那部分,然后把结果发给其他对象。这些对象好像是蚂蚁,互相通过气味(消息)传递信息,合作完成一个大任务。
类的声明:
#import"superClass.h"
#import"protocol.h"
@interface:superClass <protocol> //有些地方叫接口,顾名思义,要使用类,就必须import这些声明。
{//成员变量列表
@public 全局
@private 私有 只能类中访问
@protected 可以在子类访问
@package 框架中访问
//不能用static const 等关键字
}//如果想定义类常量,请看我的另一篇博客
@property 类型名 属性名;//关键字自动创建"_属性名"变量,并且还有getter ,setter的声明和实现
@end
1.setter内存管理参数
*assign:直接赋值(默认,适用非对象类型)
*retain:release旧值 retain新值,适用于oc对象
retain分为strong ,weak ,unsafe_unretained
*stong代表被销毁后,会对指向的对象执行release操作,release旧值 retain新值
*weak和strong不一样,和assign类似,但是如果指向对象被销毁,weak属性会自动变为nil
*unsafe_unretained和weak类似,但是如果指向对象被销毁,weak属性不会为nil
*copy :release旧值 retain新值
2.是否要生成set方法
*readwrite:读写
#readonly:只读
3.多线程管理
*nonatomic:性能高 (一般用这个)
*atomic: 性能低(默认)
4.setter和getter的名称
@property(getter = abc, setter = setAbc:)
注意:1.当你想要使用这个类时,如果只是属性要用到它,推荐用@class 类名代替import,编译速度快,防止循环引用。
2.声明保证编译成功,链接过程和函数不一样,函数会把调用的代码和函数所在代码链接(无论通过表还是直接的),oc是通过运行时程序,执行方法调用的,运行时确定消息接受对象,动态绑定。
点语法
自动转成getter和setter
在方法实现里访问成员变量
直接读取成员变量,写入则用setter方法
类名规范:头字母大写,有参数带:号
类方法以+号开头,对象方法以-号开头
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------