黑马程序员--OC学习笔记之代理模式的简单分析 代理模式概念 传入的对象,代替当前类完成了某个功能,称为代理模式。代理模式是在oc中经常遇到的一种设计模式,那什么叫做代理模式呢? 举个例子:有一个婴儿,他本身不会自己吃饭和洗澡等等一些事情,于是婴儿就请了一个保姆,于是婴儿和保姆之间商定了一个协议,协议中写明了保姆需要做什么事情, 而保姆就是这个代理人, 即:婴儿和保姆之间有个协议,保姆继承该协议,于是保姆就需要实现该协议中
黑马程序员--有关OC内存管路set方法的思考 基本数据类型不需要内存管理,管理的是对象类型分析: int main() { Person *p = [[Person alloc] init]; //p->1 p.age = 20; Car *c1 = [[Car al
黑马程序员--OC内存管理之循环retain问题 请看如下代码:Dog.h #import @class Person; //声明一个Person类,仅仅是一个声明 @interface Dog : NSObject @property(nonatomic, retain) Person *owner; //拥有owner属性 @end Person.h
黑马程序员--c语言动态内存分配 动态内存分配 (malloc)函数原型: void *malloc (size_t size) size_t是无符号的长整形 动态内存在堆段 返回值void*表示泛型指针,可以赋给任意一个类型的指针变量 函数类型存储在栈段 eg: char *p = malloc(1
黑马程序员--c语言函数 函数:什么情况下定义函数:添加一个常用的新功能函数的定义格式:返回值类型 函数名(形式参数列表){函数体}定义函数需要明确的东西:起一个有意义的函数名函数体内部不能定义和形参一样的变量1.形式参数;定义函数时函数名后面中的参数,简称形参2.实际参数: 调用函数式传入的具体数据,简称形参3.实参个数必须等于形参个数4.函数体内部不
黑马程序员--流程控制 流程控制: 顺序结构选择结构1.if的第一种结构:if(条件){语句;}2.if的第二句语句if(){语句; }else{语句;}3.if的第三种结构if(){}else if(){ }else if (){}else{}4.if的第四种语句if()语句1;语
黑马程序员--c语言各种运算 算术运算:c一共有34个运算符,包括了常见的加减乘徐运算+ (还可以表示正号)-(还可以表示负号) */(整数除以整数,还是整数,1/2的值是0)%(取余运算或模运算,两边必须都是整数,-10%3=-1,,10%-3=1,%结果的正负性只和%左边被除数正负有关)int a = 10.8;//自动类型转换(double->int),会产生警告int b = (i
黑马程序员--枚举类型和结构体 枚举类型:场合:固定取值,方便交流,比如性别设置1为男性,不好识别1.定义枚举类型:enum Season{spring, // 0 整形可以改值 spring = 1,其他依次递增summer,//1autumn,//2winter//3};2.定义枚举变量enum Season s = summer;enum Sex {Man, Woman
黑马程序员--预处理3中指令 预处理指令分3种:1>宏定义2>条件编译3>文件包含预处理指令在代码翻译成0 1之前执行预处理的位置是随便写的预处理指令的作用域:从编写指令的那一行开始一直到文件结尾# undef COUNT // 从这行开始,COUNT这个宏失效宏名一般用大写或者以k开头,变量名一般用小写带参数的宏定义:宏定义只会替换代码# define # defi
黑马程序员--c语言指向函数的指针 指向函数的指针:void test(){printf("调用了test函数");}int main(){void (*p)(); //(*p)是固定写法,表指针变量p肯定是指向函数//左边的void:指针变量p指向的函数没有返回值//右边的():指针变量p指向的函数没有形参p = test; //指针变量p指向了test函数p()
黑马程序员--指针与数组字符串 指针和数组:int ages[5] = {1, 2, 3, 4, int *p;//指针变量p指向了数组的首元素p = &ages[0];// 数组名就是数组的首地址,也是数组首元素的地址// 也可以写为p = ages;p为ages[0]的地址p+1为ages[1]的地址 p+2为ages[2]的地址 //地址相差4个printf("%d", *(p
黑马程序员--c语言指针的基本知识 指针类型:int *p; //定义了一个指针变量p,指针变量只能存储地址//指针变量p前面的int:指针变量p只能指向int类型的数据*p = 10; //指针能够找到对应的存储空间,并且可以修改利用指针可以改变多个值练习(用一个函数实现和差):# includeint SumAndMinus(int n1, int n2, int *n3);in
黑马程序员--typedef关键字和结构体 枚举类型 typedef 关键字:typedef int MyTnt; //给int 提供一个别名typedef MyInt MyInt2;typedef (char *) String结构体:struct Student{int age;};typedef struct Student MyStu;typedef struct Student {
黑马程序员--c语言数据类型总结 数据类型总结:一.基本数据类型int long int, long 8个字节 %ldshort int, short 2个字节%d %iunsigned int, unsigned4个字节 %zdsigned int, signed, int4个字节 %d %ifloat\doublefloat 4个字节 %fdouble 8个字
黑马程序员--代码块 代码块作用域:从定义的哪行代码开始,直到函数结束{代码块 代码块只在大括 号里面起作用(运行完毕内存释放)}举例:int score = 100;{int score = 200;printf("%d", score);//值为200 执行完,此代码块释放}printf("%d", score);// 值为100 函数内部定
黑马程序员--c语言关键字,标示符,注释,数据,常量,变量介绍 关键字(保留字)c(32个) 特征:全部小写 比如:int return 标识符: 比如函数名命名规则:只能由26个大小写,10个数字,下划线组成严格区分大小写不能以数字开头不可以使用关键字做标示符命名规范:最好起一个有意义的名字,别人一看这个名称就能识别也可以使用拼音 如果如果标示符包含多个单词,也可以使用驼峰表示(后面每个单词的首字
黑马程序员--extern与函数分析 extern与函数先来理解2个概念:外部函数:如果在当前文件中定义的函数允许其他文件访问、调用,就称为外部函数,c语言规定,不允许有同名的外部函数。内部函数:如果在当前文件中定义的函数不允许其他文件访问、调用,只能在内部使用,就称为内部函数。c语言规定不同的源文件可以有同名的内部函数,并且互不干扰。下面说明在一个源文件中调用另一个源文件的函数,比如在main.c中调
黑马程序员--ios中 property的参数 property 参数(4类,不同类型的参数可以一起写 @property (readwrite, assign) int age):1.内存管理相关的参数retain:release jiu值,retain xin值,适用于非OC对象类型assign:直接赋值(默认),适用非OC对象类型,@property (assign) int age copy :release旧值,co
黑马程序员--ios内存管理 内存管理:ARC机制,自动管理内存传统的内存管理也要学好基本原理:什么是内存管理:移动设备的内存极其有限,每个APP所能占的内存是有限制的当APP所占用的内存较多时,系统会发出内存警告,这是得回收一些不需要使用的内存(对象,变量等)管理范围:任何继承了NSObject的对象:对其他基本数据类型(int char)等无效int char 等基本类型 存
黑马程序员--ios 中SEL这个数据类型简介 运行 [p test]; //1.首先把test包装成SEL类型的数据,在去类中找相对应的SEL(Person这个类:SE地址L s1 == test) //2.根据SEL数据找到对应的方法地址 //3.根据方法地址调用对应的方法间接调用test方法:[p performSelector:@selector(test2)];// 传入SE