OC 基础语法
1:Obect c 与 c 语言的区别 (1) 后缀名不一样,C语言是.c 结尾 ,OC 是 .h结尾。 (2) 输出信息不同 C语言是用print() 输出,OC 是用NSLog输出。 (3) NSLog会自动换行,并且还有时间戳输出,二print没有 (4) 导入声明[文件]不一样 OC 是用import,而C语言是用include 2: import和 include的区 (1) Import只导入一次一个文件就不会重复导入,include 可以重复导入同一个文件 3:OC创建类的语法 (1) 类的声明 @interface One[类名]: NSObject{ #设置访问权限 public protecd priavted @public #这里写声明属性和行为 Int age; Char sex; } #这里写方法的声明 OC中方法的声明 1:对象方法以 ‘-’ 号 开头 2:数据类型一定要用小括号括住 3:OC方法中的小括号就一个作用 ,就用来括住数据类型 无参数声明方法格式如: - (返回类型) 方法名; - (void) Tets1; //声明一个无参数无返回类型的方法 -(int ) Test2; //声明一个无参数有返回类型为int 类型的方法 有参数声明方法格式[注意点冒号也是方法名的一部分]: - (返回类型) 方法名:(参数类型 *)参数名称 -(void) Test3 :(char *)nub; -(void) Test4(char *)nub1 :(char *)centen; //多个参数 以 : 相间隔 @end //声明结束 (2) 类的实现 @implementation One[类名] #这里写实现方法的声明 格式跟函数的声明一个 实现格式如: (1)无参数 -(void) Test1{ NSLog(@”你好”); } (2) 有参数 -(void)Test3:(char *)nub{ NSLog(@”电话号码%s”,nub); } -(void)Test4:(char *)nub :(char *) coent{ NSLog(@”电话号码%s”,nub); } @end (3) 类的实例化和调用方法属性 Int main(int argc, const char * argv[]){ #格式为: 类名 指针; One *p; /* 实例化一个对象在内存中干了三件事 1:开辟存储空间 2:初始化成员变量 3:返回指针地址 */ P=[One new]; #给属性赋值 P->age=22; p->sex=’男’; #输出变量 NSLog(@”年龄=%d,性别=%c”,p->age,p->sex); #有参数的方法调用 [p Test3:”13417709177”] } 4:OC语言的注意点 1.只有类的声明没有实现 2.缺少@end 3.不能把实现写到声明中同理,声明也不能写到实现中,不能嵌套 4.不能把类的声明实现写到函数中 5.成员变量必须写到声明的大括号中 6.声明成员变量不能直接赋值 7.OC的弱语法:注意,没有声明同样可以定义一个类,(实际开发中千万不要这样干) /* f 经典错误: '-[Person run]: unrecognized selector sent to instance 0x100103410' 没实现这个方法的经典错误。 */ 5:OC 中字符串的使用 (1) 创建一个简单的字符串并输出 NSString *str1=@”我是字符串1”; NSLog(@“%@”,str1); (2) 字符串格式化 NSString *str2=[NSString stringWithFormat:@”身高%d,体重%.2f”,sg,tz] NSLog(@”%@”,str2); (3) 计算个数 NSString *str3=@”我是中国人”; Int count=[str length]; 6:类方法与对象方法 (1)对象的方法是与 减号 开头 类的方法是以 加号开头 (2)对象的方法调用方式[是以对象去调用方法] Test1 *P=[Test1 new ] Int sum1=[p nb1:10 nb2:20]; (3)类的方法调用方式[是以类名调用方法] Int sum2=[Test nb1:10 nb2:20]; (4) 当方法不使用成员变量的时候就尽量使用类方法[少开辟空间,节省内存] (5) 类方法不能访问成员变量[实力变量 也就是对象] 7:继承 (1) 子类继承了父类的成员变量和方法 (2) new方法是父类中继承过来的 (3) 如果在子类中实现了和父类中同名同类型的方法,我们称之为重写 (4) 在继承当中调用方法,首先会在本类中找,如果本类没有找到就去父类中找 (5) 在子类中不仅可以重写父类当中的对象方法,也可以重写父类当中的类方法 (6) 子父类中的方法调用顺序:现在本类中找,如果本类没有再到父类中找,如果父类中没有,就到爷爷类中找 NSObject是99.9%的类的父类 (7) OC 不支持多继承[也就是说只有一个父类] 支持多层继承 [父->子->孙] 8:多态 (1) 什么是多态:多态就是某一类事物的多种形态 (2) 没有继承就没有多态 (3) 用父类类型的指针指向了子类对象,这就是多态 9: OC访问成员变量格式 (1) 类名 *p=[类名 new] p->属性=值; (2) p.属性=值; 10:成员变量的作用域 Public:公共的 在其他文件夹中也可以访问 Private:私有的 在其他文件下不能访问 只是在本类中使用。 Protected 受保护的 在其他文件夹中不能访问 在本类中可以访问 11:自动设置get/set 属性 @synthesize 属性 ;[在类的实现中写,前提是你已经声明了这个属性] 12: protected 作用 自动生成get/set 属性 格式:@public int _no;