import和include的区别
import是include的升级版,可以防止头文件重复包含,记住:以后不管什么时候只要是需要引入头文件,都使用importFoundation是一个框架,相当于一个集合,里面包含了很多的头文件。Foundation.h是Foundation框架的主头文件
主头文件:在主头文件当中包含了框架的其他所有头文件。
Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/Foundation.framework/Versions/C/Headers
#import <Foundation/Foundation.h>
objective-c的入口和c一样,也是main函数
比较printf与Nslog1.名字不同
2.导入的头文件不同
3.打印的内容不同
4.输入参数不同,nslog中,在“”前面需要加@
5.printf是c的打印函数,nslog是oc当中的打印函数
6.nslog可以实现自动换行
第一个OC类
三要素:
1.类名:首字母大写,最好不要有下划线,从第二个单词开始遵循驼峰原则(GoodTeacher)2.属性:最好是以下划线开头
3.行为(方法):方法名出首个单词外,遵循驼峰原则,首个单词的首字母小写
oc当中创建一个类:类的声明和类的实现(定义)
类的声明部分
构成:>@interface 类名>@end (end代表了类的声明部分的结束)
写类的属性(成员变量)和行为的声明
过枚举定义手机的颜色
typedef enum{
ColorWithBlack,//黑色
ColorWithWhite,//白色
ColorWithTuhaojin//土豪金
}Color;
@interface Phone : NSObject//类的声明部分必须有:NSObject,它才称之为一个类
类的属性的声明{
@public//想在类的外部调用内部的成员变量
//类的属性必须要写在大括号当中
//会将他们都初始化为零
int _cpu;//手机的处理器
Color _color;//手机的颜色
}
类的行为的声明
//必须写在大括号外面,@end的前面//类的方法:类方法,对象方法
//主要研究对象方法
//无参无返回值的声明
void test();
要求:1.方法要以-开头,
2.必须将数据类型放在小括号里面,且只能将数据类型放在里面
3.方法的声明部分写在大括号外面,@end的前面
4.方法名出首个单词外,遵循驼峰原则,首个单词的首字母小写
5.当方法没有参数的时候,方法名后面什么都不用写
-(void) test1;
//无参有返回值
-(char *)receiptMessage; //接收信息
//有一个参数无返回值的方法
void callPhone(char * number);
//注意点:1.无参无返回值方法的注意点全盘接受,
2.有一个参数就有一个:(冒号),冒号紧跟在参数的前面
3.冒号是方法名的一部分,-号不是
-(void)callPhone:(char *)number;
//有几个参数就有几个:
//在每个冒号的前面加一个修饰词,更加清楚的知道方法要表达的意思,想一个句子
-(void)sendMessage:(char *)message :(char *)number;
-(void)sendMessage:(char *)message withNumber:(char *)number;
@end
类的实现部分
//构成:>@implementation 类名// >@end
//作用:将声明部分声明的行为(方法)进行具体的实现
@implementation Phone
//方法的实现
-(void)test1{
NSLog(@"这是Phone类");
}
@end
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]){
@autoreleasepool {
//在oc中当想让类执行某个行为的时候,这样写[类名/对象 方法名称] [方法的调用者 方法名称]
//当用类名去调用的方法叫类方法
//当用对象调用的方法叫对象方法
//[Phone new];
/*
1.开辟了一块存储空间
2.给成员变量(在类的声明当中的大括号里面的变量,也叫实例变量)进行初始化
3.返回内存空间的地址
*/
//创建一个对象
Phone *p = [Phone new]; //通过一个Phone类型的指针保存Phone类型对象的地址,oc当中我们通常把这个指针叫做对象
//p是局部变量,在栈区
p->_color = ColorWithWhite;
p->_cpu = 4;
//oc中的类在赋值的时候与结构体类似
//通过new方法创建的对象之间完全是独立的
//对象方法要由对象来调用
//isa指针,是每一个类中隐藏的成员变量
//一个类可以创建很多个对象,对象之间完全独立,他们的属性和行为相同或相似
}
return 0;
}