iOS学习010
来源:互联网 发布:修改了mac用户名 编辑:程序博客网 时间:2024/06/06 07:27
.h文件和.m文件的作用
:苹果公司为了方便程序员产看变量声明,方法的声明。原则上希望大家把变量和方法的声明放在.h文件中编写,把方法的实现放在.m文件中实现。
:只有放在.h文件中的方法和变量,才可以被别的对象调用
:引入系统框架,Fuondation框架中包含所有的oc相关的类,只有引入框架,才能使用框架中的类
#import <> 引入的是系统框架 苹果提供的类
#import"" 引入用户自己定义的类
:C面语言用的是#include
#import 可以避免重复包含。A引入了C框架 B 也引入了C框架 当A引入B时,C框架在A中是引入两次,#import可以自动取消重复引用的框架,保持永远引入一次。
@interface 声明的关键词 可以翻译为接口
student @interface 关键词后面的 就是类名 : 后面的父类名
所有的oc的类都要有一个父类,NSobject就是oc中最基础的类
@interface Student : NSObject
{
//添加一个{}写成员变量 或者叫 类的属性
// 定义一个成员变量保存年龄,定义的变量名有单词组成,第一个单词首字母要小些。习惯上加一个下划线_,表示成员变量
// @private,@protect @public oc默认@protect
int _age ;
// 定义一个浮点型身高变量,保存身高
float _height;
// 定义一个成员变量浮点型,保存体重
float _weight;
}
//类要使用必须创建代表类的对象,也就是说生成一个 student类型的变量,我们管这人个过程叫做列化。
//类的初始化方法:每个类都至少有一个初始化方法
//符号-代表方法的类型是 实例方法 或者成为对象方法
//初始化方法 负责完成对某些变量的赋值。init 翻译为初始化(开辟内存) id是一个泛类型。可以代表任何类型
- (id)init;
:main 函数是一个应用程序的入口
:使用类创建一个对象,先导入这个接口文件.h文件
:alloc:为对象开辟内存空间,init:给对象实例化,初始化,创建这个对象,这个函数叫做构造函数。
GirFrind *baby = [[GirFrind alloc]init];
创建对象的公式 类名* 对象名 = [[类名 alloc]init]
类是对一个事物的高度抽象,可以使用这个类创建多个对象
每一个对象和另外一个都不是同一个东西
NSLog(@"剑圣的等级%ld级",[jianSheng lv]);
:不用传参的,有返回值的函数
: - (返回值类型)函数名
: return 返回值;
有返回值函数的意义
有返回值函数就相当于返回值类型的一个实际值
- (int)aa//aa这个函数就是int类型的数字
{
return 15;
}*/
需要传参的有返回值的
- (int)sumWithA:(int)a bb:(int)b
{
return sum;
}
4.在OC中 数组、可变数组、字典、可变字典的区别:
NSMutableArray *array1 = [NSMutableArray array];
NSMutableArray *array2 = [NSMutableArray arrayWithObjects:@"",@"",nil];//初始化并添加多个元素
可变数组添加元素:[array addObject:@"" ];
数组的遍历: for (id obj in group){//id obj 数组里的每个元素 in 表示在哪里 group要遍历的数组
NSLog(@"%@",obj);
字典的初始化并添加多个元素: NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"object",@"key",@"object1",@"key1", nil];
初始化并添加元素: NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setObject:@"liLa" forKey:@"name1”];
NSLog(@"%@",dic);
5.封装、继承、多态
:面向对象的三大特征:封装,继承,多态
:封装:就是把具体的对象抽象化 把相同类型的对象抽象成一个类
:封装的好处:可以提升代码的复用性;私有变量的安全性;提供代码的可读性
继承:子类拥有父类的全部属性和方法
:子类就是继承的类;父类(超级类):被继承的类
:子类独有的父类不能使用
:子类可以拓展父类的方法和属性同时也可以添加变量
:oc中没有多继承,但可以多级继承
:多态:一个事物的多样性,多种形态,不同的状态
如果父类拥有的方法,子类不希望使用那种实现方式 可以重新写这个方法
:调用父类本身的方法 添加自己独有的方法
[super life];
例如:
NSLog(@"%@是个人类活着",self.name);
Person * jzq = [[Person alloc]init];
jzq.name = @"机智强";
[jzq life];
Person *tangSeng = [[Person alloc]init];
tangSeng.name = @"唐僧";
[tangSeng back];
Animal * daHUang = [[Animal alloc]init];
daHUang.name = @"大黄";
[daHUang life];
Animal *xaioHuang = [[Animal alloc]init];
xaioHuang.name = @"小黄";
[xaioHuang back];
Person *Jobs = [[Person alloc]init];
Jobs.age = 60;
NSLog(@"乔布斯的年龄 = %d岁",Jobs.age);
6.数组嵌套,字典嵌套
数组套数组
有两个班级
NSArray *class1 = @[@"tome",@"merry",@"lucy",@"tedy",@"summer"];
NSArray *class2 = @[@"aa",@"bb",@"cc"];
// 放在一个年级里
// NSArray *allClasses = @[class1,class2];
// NSLog(@"%@",allClasses[1][1]);//取class2的bb
数组套字典
// NSDictionary *classes1 = @{@"001":@"halibote",@"002":@"rulai",@"003":@"姜子牙jianziya"};
// NSDictionary *classes2 = @{@"001":@"dage",@"002":@"xiaog",@"003":@"jlihu"};
// NSArray *allClass1 = @[classes1,classes2];
// NSLog(@"%@",allClass1[0][@"003"]);
NSDictionary *aa = @{
@"name":@"David Beckham",
@"age":@(38),
@"gender":@"true"};
NSDictionary *bb = @{
@"name":@"Victoria Beckham",
@"age":@(39),
@"team":@"Spice Girls"};
NSArray * cc = @[@"Brooklyn",@"Romeo",@"Cruz",@"Harper"];
NSDictionary *family =@{@"hasbend”:aa,@"wife":bb,@"childrens":cc} ;
NSLog(@"丈夫的信息%@",family[@"hasbend"]);
NSLog(@"妻子的信息%@",family[@"wife"]);
NSLog(@"%@ 的妻子是 %@ 他们的孩子分别是:%@",family[@"hasbend"][@"name"],family[@"wife"][@"name"],family[@"childrens"]);
7.数据模型
WifieModel *wife = [[WifieModel alloc]init];
wife.name = message[@"wife"][@"name"];
wife.age = [message[@"wife"][@"age"] intValue];
wife.team = message[@"wife"][@"team"];
Man *man = [[Man alloc]init];
man.name = message[@"name"];
man.age = [message[@"age"]intValue];
man. gender = message[@"gender"];
man.wife = wife;
man.childList = childArray;
NSLog(@"%@",man);
8.类目
类目:(category)的基本概
: 类目是在原有类的基础之上添加方法,在使用的时候只需要用原有类实例化出来的对象调用即可
:在实际开发中的使用情况:扩展已经封装好的类 (不希望 再改变原有类)团队里面分工开发一个模块的时候
:如果类目中覆盖现有类的方法。会引起super类的消息断裂,因为类目中的方法优先级更高,因此一般不覆盖类 目中的方法
//类目和子类继承有什么异同点:
//不能在类目里面添加属性,变量,只能添加方法
//共同点 子类:可以扩展父类的方法
类目:可以扩展原有类的方法
//不共同点 子类:可以添加属性,实例变量
类目:不能在类目里面添加属性,变量,只能添加方法
//扩展方法的调用
子类:用子类的对象调用扩展方法
类目:用原有类的对象调用
- iOS学习010
- IOS 学习
- ios学习
- ios学习
- IOS学习
- IOS 学习
- iOS 学习
- 学习iOS
- iOS学习
- ios 学习
- IOS学习
- ios 学习
- iOS学习
- ios学习
- ios学习 - 控件学习
- IOS学习 CGContextRef学习
- IOS学习 NSUserDefault学习
- ios学习--ios推送机制
- LinkedHashMap 根据PUT顺序排序Map
- Algorithms—75.Sort Colors
- asp.net页面的304 Not Modified代码与 原理
- 1034. Head of a Gang (30)
- php $_SERVER中的SERVER_NAME 和HTTP_HOST的区别
- iOS学习010
- 资金池信托卷土重来 规模逼近2000亿[万奥]
- oracle存储过程中游标的使用(包括带参数的游标)
- 53.根据公式计算值
- Java中HashMap遍历的两种方式
- OCP-1Z0-051-2015-16题
- CreateSolidBrush 内存释放
- Linux中shell脚本调试
- Spring整合JMS(二)——三种消息监听器