-
0: 首先oc完全兼容c语言,就是可以直接运行c语言的程序
NS—>NextStep 是乔布斯的Next公司的操作系统的名字,所以这里的很多类型都叫做NS开头的
1: oc特性:
数据类型:NSInteger,CGFloat,BOOL,NSObject *, id,SEL,Block // NSObject * 其实就是指针,也是对象, id 可以标示任意类型的对象,
逻辑控制语句for-in循环
oc方法,对象方法(-),类方法(+)
对象方法:-(id)initWithString:(NSString *)string;
类方法:+(id)stringWithCString:(const char ()cString
encoding:(NSStringEncoding)enc;
- ++++++++++++++++++++++
- 可以直接运行c的程序:
// // main.m // FirstObjectC // // Created by 千 on 16/7/24. // Copyright © 2016年 kodulf. All rights reserved. // #import <Foundation/Foundation.h> //c语言的方法 int add(int a, int b){ return a+b; } int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); NSLog(@"Hello OC!");//日志打印,并且string 已经对象话了,前面天假了@的符号 printf("Hello OC\n"); //c语言输出日期 printf("%s-%s-%s\n","2016","04","26"); //oc输出日期 NSLog(@"%s-%s-%s\n","2016","04","26"); //调用c语言的方法 int result = add(1,2); NSLog(@"1+2=%d",result); } return 0; }
++++++++++++++++++++++
3: 面向对象简介:
和c语言很像啊,封装继承和多态,oc也是单继承的,和java 完全一样,呵呵呵呵
多态,一个方法可以有多个不同的实现
类的结构
设计一个手机类
类文件系统由.h和 .m文件共同构成
类的结构:类名,属性,方法
4: 创建一个类:
command+n来创建,然后选择Cocoa Class。输入类名就可以创建了
我们把类的申明部分分放在.h的文件中,实现放在.m文件中,这个和c语言的的创建一个源文件的思路一模一样。只不过c是.c文件
- 声明Person类,其实应该是Phone的,写错了
-
+++++++++
Phone.h
// // Person.h // PhoneTest // // Created by 千 on 16/7/24. // Copyright © 2016年 kodulf. All rights reserved. // #import <Foundation/Foundation.h> @interface Person : NSObject { //要以下划线开头来声明类的属性 @public//如果不加上public ,外面是不好访问的,这个和java几乎就是一样的嘛。哈哈,相当于默认的就是private的 CGFloat _screenSize; NSString *_color; CGFloat _memory; } //在h的文件里面声明,在m文件中实现 -(void)makeCallToSomeone:(NSString *)someone; -(void)sendMessage:(NSString *)message toReceiver:(NSString *)toReceiver; @end
Phone.m
// // Person.m // PhoneTest // // Created by 千 on 16/7/24. // Copyright © 2016年 kodulf. All rights reserved. // #import "Person.h" @implementation Person -(void)makeCallToSomeone:(NSString *)someone { NSLog(@"给%@打电话\n",someone);//注意c语言里面用%s 来表示,这里oc 里面用%@来表示 } -(void)sendMessage:(NSString *)message toReceiver:(NSString *)toReceiver { NSLog(@"给%@发信息,信息内容:%@\n",toReceiver,message); } //description的方法是重写的父类的方法,相当于java中的tostring方法 -(NSString *)description{ //[NSString stringWithFormat:]其实就相当于java 中的string.valueOf()方法 666 return [NSString stringWithFormat:@"Color是%@ 内存是%.1f 屏幕大小%.1f寸\n",_color,_memory,_screenSize]; } @end
main.m
// // main.m // PhoneTest // // Created by 千 on 16/7/24. // Copyright © 2016年 kodulf. All rights reserved. // #import <Foundation/Foundation.h> #import "Person.h"//导入这里使用的和java 一样使用import int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); Person *phone =[Person new]; //phone->_color = 1;//默认的这样是不可以修改的,如果想要成员变量在外部夜可以,需要在类里面声明为public phone->_color =@"白色";//注意“”前面一定要有@符号 phone->_memory=126; phone->_screenSize=4.4; NSLog(@"Color是%@ 内存是%.1f 屏幕大小%.1f寸\n",phone->_color,phone->_memory,phone->_screenSize); NSLog(@"使用description输出,相当于java的tostring方法\n"); NSLog(@"%@\n",phone); //上面的语句相当于虾面的语句 NSLog(@"%@\n",[phone description]); [phone makeCallToSomeone:@"小明同学"]; [phone sendMessage:@"kodulf今年年薪100万美元" toReceiver:@"kodulf"]; } return 0; }
++++++++