一.第一个OC程序
代码演示:
#import <Foundation/Foundation.h>
int main(int argc ,const char *argv[]){
@autoreleasepool {
NSlog(@"hello heima!");
}
return 0;
}
1.#import与#include
(1)都是预编译指令,把文件拷贝到指令所在位置
(2)#import <> 与#import <>都是用来包含系统头文件的
(3)#import ""与#import "" 都是用来包含自己项目中的头文件
(4)#import <> 是#import <>的升级版,可以自动防止文件重复包含
2.Foundation :就是Foundation框架
3.@autoreleasepool :是内存管理的一个东西(了解即可)
4.NSlog :Foundation框架提供的用于日志输出的函数
NSlog与printf对比
(1)printf 是由C语言提供,在stdio.h头文件中
(2)NSlog是由Foundation框架提供,在NSObjCRuntime.h文件中
(3)NSlog包含日志输出的日期,以及对应的应用程序
(4)NSlog自动换行,在末尾加\n无效
(5)NSlog中的格式字符串不是普通C语言字符串,@" " 是NSString对象的字 面量表示
(6)printf中所有占位符在OC中都支持
(7)NSlog新增占位符%@用于输出对象的
二.面向对象思想
1.面向对象与面向过程:面向对象是相对面向过程而言,他们都是一种思想。
面向过程:强调的是功能行为,关注的是解决问题需要哪些步骤
面向对象:将功能封装进对象,强调具备了功能的对象,关注的是解决问题需要哪些对象
面向对象是基于面向过程的
2.面向对象特点:
(1)是一种符合人们思考习惯的思想
(2)可以将复杂的事情简单化
(3)将程序员从执行者变为指挥者
三.类与对象的关系
OC中描述事物通过类的形式体现。类是具体事物的抽象(概念上的定义)
对象即是该类事物实实在在存在的个体
四.创建第一个类
1.[类名 new]作用 :通过类来创建一个对象
(1)为对象在堆中分配内存
(2)初始化成员变量
(3)返回指向刚刚创建出来的的对象的指针
2.OC中方法声明的格式
对象方法:是属于对象的,只能通过对象调用,方法类型符是 -
2.1无形参的对象方法声明格式 - (返回值类型) 方法名称
2.2有形参的对象方法声明格式
注意点:(1)冒号 : 是方法名称的一部分
(2)一个冒号:对应一个形参
(3)冒号:前面的文字用来描述参数
3. OC中一个类包含2个部分:声明和实现
3.1声明:@interface 类名 : NSObject
{
@public
// 一定要在大括号中声明类的属性(成员变量)
// 命名规则:标识符规则
// 命名规范:_开头 _后面字母小写,其后的单词首字母大写
}
方法声明; // 此处须加分号
@end
(1)类的声明必须以@interface开头,必须以@end结尾
(2): NSObject 基类(所有类的祖先类),作用是让类具有创建对象的能力
注意点:(1)成员的声明必须放在@interface与@end之间的大括号中
(2)方法的声明必须放在{}与@end之间
(3)@implementation 就是用来实现方法的
(4)类只有声明没有实现,链接会报错
(5)在OC中定义类、枚举、结构体的时候需要加前缀(_CZ)
3.2实现:类的实现必须以@implementation开头,必须以@end结尾
@implementation 类名
方法
{
方法实现// 对象方法中可以直接访问该对象的成员变量
}
@end
代码演示:
类名:Person
属性 :姓名 年龄
行为 :吃
// 声明类
@interface _CZPerson :NSObject
{// 声明属性(成员)
@public
char *_name;
int _age;
}
//声明方法
- show;
- void eat: (char*) food;
@end
//实现类
@implementation _CZPerson
- show
{
NSlog(@"name=%s,age=%d",_name,_age);
}
- void eat: (char*) food
{
NSlog(@"吃了%s",food);
}
@end
#import <Foundation/Foundation.h>
int main(int argc ,const char *argv[]){
// 通过类创建对象
_CZPerson p = [_CZPerson new];
p->name = "xm";
p->age = 18;
// 调用方法
[p show];
[p eat:apple];
return 0;
}
|
|