1,类组合中的一些理解
如果一个类A成员变量里面包含另一个类B,则在A创建一个对象后,并没有初始化,A对象里面只有一个B类型的指针,但这个指针并没有指向任何内存空间,和其他类型一样时空类型,其实和基本数据类型道理是一样的,需要用set方法给自己赋值。
例如 Circle 类中包含类 Point2D 这个类Circle *c1 = [Circle new];
Point2D *p1 = [Point2D new];
[p1 setX:10 andY:15];
[c1 setPoint:p1]; // 用Circle的setPoint方法给_Point 赋值。
2, BOOL类型函数名命名规则
当创建 BOOL 返回值类型的函数时,函数名一般在前面加上is。
3, 类名调用类方法不加*
只有利用类名调用类方法的时候,不需要在类名后面写* ,其它情况下,类名后面统一加上一个* 。
4, 条件表达式的值只能是1或0;5, 代码编写以可读性,简洁为标准。
6, 定义一个类分两个文件:.h声明文件 .m实现文件
.h :成员变量、方法的声明
.m :方法的实现
7, 头文件 包含规范
include 和 import 一般只包含.h 声明文件,不要包含 .c或.m文件,因为一旦包含进去Xcode编译器会报重复定义的错误。因为Xcode编译器会同时编译所有.m文件。
8,注意 #pragma mark – 的“-”后面不能有空格。
如果你的标志没有出现在弹出菜单中,比如没有分隔线出现,请在Xcode菜单 “Preferences..”中的 “Code Sense”选项取消选中”Sort listalphabetically”即可。
9. @property参数规范
如果创建的是对象,一般写上(nonatomic,retain),如果创建的是一般数据类型,一般写上(nonatomic,assign)。
10,@class
开发中,当类引用类时,声明.h文件里一般用@class ,这样可以提高性能,在.m实现文件里,如果引用到被引用类的实体变量或者方法时,还需要使用#import方式引入被引用类
11,命令行书写
链接的时候要主动告诉编译器要把 Foundation框架接入进来。指令为:
cc xxx.o -framework Foundation
12,类的书写
(1),声明和实现后面忘了 @end,声明写在实现部分,实现部分写在声明里面,要严格按照格式语法书写。
(2),成员变量
1> 默认为 @previte
2> 只能在实例(对象)下调用成员变量
3> 不允许在声明里初始化
4> 不能随便将成员变量当做C语言中的变量来使用
13,对象的书写
(1),OC对象成员变量
一定要以下划线 _ 开头
好处:1,让成员变量和get方法的名称区分开。
2,可以跟局部变量区分开,一看到下划线开头的变量,一般都是成员变量。
(2),OC对象方法
1>对象方法都是以减号 - 开头,- 后面跟空格
2>对象方法的声明必须写在 @interfacehe和 @end之间
对象方法的声明必须写在 @implementation和 @end之间
3>- 后面跟空格
14,c函数
(1),c语言函数可以写在文件中任意位置。
(2),调用不依赖对象。
(3),函数内部不能直接通过成员变量名访问某个对象的成员变量。
15,OC类方法
(1),加号 + 开头
(2),只能由类(名)来调用
(3),可以允许类方法和对象方法同名
(4),类方法中不能访问成员变量(实例变量)
16,类方法的好处和实用场合
(1),不依赖于对象,执行效率高
(2),能用类方法尽量用类方法
(3),场合:当方法内部不需要使用到成员变量时,就可以改为类方法