黑马程序员-IOS开发基础班之Objective-C第一天学习笔记

#import指令

  1. 以#号开头,是一个预处理指令
  2. 作用:是#include指令的增强版,将文件的内容在预编译的时候拷贝写指令的地方
  3. 增强:同一个文件无论#import多少次,只会包含一次
  4. 简要原理:#import指令在包含文件的时候,底层会先判断这个文件是否被包含,如果被包含会略过,否则才会包含

框架

  1. 是一个功能集,苹果或者第三方事先将一些程序在开发程序的时候经常要用到的功能事先写好,把这些功能封装在一个一个的类或者函数中,这些函数和类的集合叫做框架,类似于C语言的函数库
  2. Foundation框架:这个框架中提供了一些最基础的功能,输入和输出,基本的数据类型
#import <Foundation/Foundation.h>

自动释放池

@autoreleasepool 自动释放池。可以将代码写在自动释放池中,或者干脆把这个自动释放池删除,不会有任何的影响。

NSLog函数

  1. 作用:是printf函数的增强版,向控制台输出信息
  2. 语法:NSLog(@"格式控制字符串",变量列表);
    最简单的语法:NSLog(@"要输出的信息");
  3. 增强:输出一些调试相关信息:执行这段代码的时间,程序的名称,进程编号,线程编号;会自动换行,在输出完信息之后,自动换行;NSLog函数不仅可以输出C数据类型变量的值,还可以输出OC新增的数据类型变量的值
  4. 用法:和printf函数差不多,一样可以输出变量的值,并且占位符和用法都一样
  5. 使用注意事项:1.NSLog函数的第一个参数前面必须要加一个@符号。2.如果在字符串的末尾添加了换行符,那么函数的自动换行功能就会失效

NSString

OC中专门用来存储字符的一个类型。NSString类型的指针变量,专门用来存储OC字符串的地址

OC的字符串常量必须要使用一个前缀@符号。@“jack”是一个OC的字符串常量。如果没有@前缀就是一个C的字符串。

NSString类型的指针变量,只能存储OC字符串的地址。

NSString *str = @"jack";

如果要使用NSLog函数输出OC字符串的值,那么使用占位符%@

注释

和C语言的注释一摸一样,//与/**/

函数的定义和调用

和C语言函数的定义和调用一摸一样

OC程序的编译,链接,执行

  1. 在.m文件中写上符合OC语法规范的源代码
  2. 使用编译器将源代码编译为目标文件 cc -c xx.m 
  3. 链接:cc xx.o 如果程序中使用到了框架中的函数或者类,那么在链接的时候,就必须要告诉编译器取那个框架中找这个函数或者类
    cc xx.o -framework 框架名称
  4. 链接成功以后,就会生成一个a.out文件,执行就可以了
  5. 源文件 .m  目标文件 .o  可执行文件 .out

数据类型

  1. OC中支持C语言中的所有的数据类型
  2. BOOL类型:可以存储YES或者NO中的任意一个数据;一般情况下用来存储条件表达式的结果;BOOL类型的本质,有符号的char变量 typedef signed char BOOL;
  3. Boolean类型:可以存储true或者false中的任意一个数据;一般情况下用来存储条件表达式的结果;Boolean类型的本质,无符号的char变量 typedef unsigned char Boolean;
  4. class类型:类
  5. id类型:万能指针
  6. nil 与 NULL差不多
  7. SEL 方法选择器
  8. block 代码段
  9. OC支持C语言中的所有的运算符
  10. CO支持C语言中的所有的控制语句
  11. OC支持C语言中的所有的关键字,并且效果一致

OC语言完全兼容C语言,在OC中可以写任意的C代码,并且效果一致

如何定义类

定义类的语法

//类的声明
@inteface 类名 : NSObject {
    //这类事物具有的共同的特征,将他们定义为变量
}
//方法的声明
@end

//类的实现
@implementation 类名
//方法的实现
@end

@inteface Person : NSObject {
    NSString *_name;
    int _age;
    float _height;
}

@end

@implementation Person

@end

//创建一个Person类的对象
//对象名为p1
Person *p1 = [Person new];
  • 类必须要有声明和实现
  • 类名用你描述的事物的名称来命名就可以,类名的每一个单词的首字母必须大写
  • 用于表示这类事物的共同特征的变量必须要定义在@interface的大括弧之中,称之为属性或者成员变量,实例变量,字段......
  • 为类定义属性的时候,属性的名称必须要以_下划线开头

如何使用对象

  1. 默认情况下,对象的属性是不允许被外界直接访问的,如果允许对象的属性可以被外界访问,那么就在声明属性之前加一个@public关键字
  2. 访问对象的属性的方式:对象名->属性值 = 值;对象名->属性值;(*对象名).属性名;
@inteface Person : NSObject {
    @public:
    NSString *_name;
    int _age;
    float _height;
}
//定义无参数的函数
- (void)run;

@end

@implementation Person
//实现无参数的函数
- (void)run {
    NSLog(@"我正在跑步");
}

@end

Person *p1 = [Person new];
p1->_name = @"jack";
p1->_age = 19;
p1->_height = 19.19f;

(*p1)._name = @"jack";
(*p1)._age = 19;
(*p1)._height = 19.19f;

无参数的方法的声明与实现

  1. 声明:在@interface的大括弧的外面 -(返回值类型) 方法名称; 
  2. 实现:在@implementation之中实现
  3. 调用:[对象名 方法名];
@inteface Person : NSObject {
    @public:
    NSString *_name;
    int _age;
    float _height;
}
//定义无参数的函数
- (void)run;

@end

@implementation Person
//实现无参数的函数
- (void)run {
    NSLog(@"我正在跑步");
}

@end

带一个参数的方法

  1. 声明:在@interface的大括弧的外面 -(返回值类型) 方法名称:(参数类型)形参名称;
  2. 实现:在@implementation之中实现
  3. 调用:[对象名 方法名];
@inteface Person : NSObject {
    @public:
    NSString *_name;
    int _age;
    float _height;
}
//定义无参数的函数
- (void)run;
//定义带一个参数的函数
//函数名称叫eat: 参数类型 NSString *类型 参数名字叫做foodName
- (void)eat:(NSString *)foodName;
@end

@implementation Person
//实现无参数的函数
- (void)run {
    NSLog(@"我正在跑步");
}
- (void)eat:(NSString *) foodName {
    NSLog(@"%@真好吃.", foodName);
}
@end

[p1 eat:@"红烧排骨"];

带多个参数的方法

  1. 声明:在@interface的大括弧的外面 -(返回值类型) 方法名称:(参数类型)形参名称1 : (参数类型)形参名称2 : (参数类型)形参名称3;
  2. 实现:在@implementation之中实现
  3. 调用:[对象名 方法名];
@inteface Person : NSObject {
    @public:
    NSString *_name;
    int _age;
    float _height;
}
//定义无参数的函数
- (void)run;
//定义带一个参数的函数
//函数名称叫eat: 参数类型 NSString *类型 参数名字叫做foodName
- (void)eat:(NSString *)foodName;
//定义带多个参数的函数
- (int)sum:(int)num1 :(int)num2;
@end

@implementation Person
//实现无参数的函数
- (void)run {
    NSLog(@"我正在跑步");
}
//实现带一个参数的函数
- (void)eat:(NSString *) foodName {
    NSLog(@"%@真好吃.", foodName);
}
//实现带多个参数的函数
- (int)sum:(int)num1 :(int)num2 {
    return num1 + num2;
}
@end

[p1 sum:1 :2];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值