
知识点总结
shimenyimeng
这个作者很懒,什么都没留下…
展开
-
关于父类子类继承关系
一.继承:子类可以直接复用父类中的成员.子类继承父类所有方法的声明和实现 非私有的实例变量以及协议 继承时要在.h中声明一下 继承具有单根性和传递性继承的根类:大多都继承自 NSObject 类,所以在定义一个类时,要继承NSObject 类。继承就是代码优化公共部分交给父类例如:(Person是父类Worker 和Worker都继承了Person成为子原创 2016-09-23 22:20:10 · 4088 阅读 · 0 评论 -
点语法
person.h#import@interface Person : NSObject{ int _age; NSString *_name;}- (void)setAge:(int)age;- (int)age;- (void)setName:(NSString *)name;- (NSString *)name;@endperson.m原创 2016-10-25 15:00:26 · 230 阅读 · 0 评论 -
成员变量的作用域
@public : 在任何地方都能直接访问对象的成员变量 @private : 只能在当前类的对象方法中直接访问(@implementation中默认是@private) @protected : 可以在当前类及其子类的对象方法中直接访问 (@interface中默认就是@protected) @package : 只要处在同一个框架中,就能直接访问对象的成员变量 @int原创 2016-10-25 15:02:36 · 773 阅读 · 0 评论 -
构造方法
person.h#import @interface Person : NSObject@property int age;@property id obj;@endperson.m#import "Person.h"@implementation Person@endmain函数int main(int argc, const c原创 2016-10-27 15:42:52 · 222 阅读 · 0 评论 -
类的本质
1.当程序启动时,就会加载项目中所有的类和分类,而且加载后会调用每个类和分类的+load方法。只会调用一次。 2.当第一次使用某个类时,就会调用当前类的+initialize方法 3.先加载父类,再加载子类(先调用父类的+load方法,再调用子类的+load方法) 先初始化父类,再初始化子类(先调用父类的+initialize方法,再调用子类的+initialize方法)类本身原创 2016-10-27 15:44:05 · 403 阅读 · 0 评论 -
description方法
person.h#import @interface Person : NSObject@property int age;@property NSString *name;@endperson.m#import "Person.h"@implementation Person// 决定了实例对象的输出结果//- (NSString *)descript原创 2016-10-27 15:45:06 · 738 阅读 · 0 评论 -
SEL
SEL其实是对方法的一种包装,将方法包装成一个SEL类型的数据,去找对应的方法地址。找到方法地址就可以调用方法,其实消息就是SEL 1.把test2包装成SEL类型的数据 2.根据SEL数据找到对应的方法地址 3.根据方法地址调用对应的方法间接调用test2方法[p performSelector:@selector(test2)]; [p test3:原创 2016-10-27 15:45:57 · 399 阅读 · 0 评论 -
引用计数器的基本操作
1.方法的基本使用 1> retain :计数器+1,会返回对象本身 2> release :计数器-1,没有返回值 3> retainCount :获取当前的计数器 4> dealloc * 当一个对象要被回收的时候,就会调用 * 一定要调用[super dealloc],这句调用要放在最后面 2.概念 1> 僵尸对象 :所占用内存已经被回收的对象,僵尸原创 2016-10-27 15:47:14 · 596 阅读 · 0 评论 -
setter方法的内存管理
set方法的内存管理当时用alloc或者new 创建一个对象,就必调用release 或autorelease1.你想使用(占用)某个对象,就应该让对象的计数器+1(让对象做一次retain操作) 2.你不想再使用(占用)某个对象,就应该让对象的计数器-1(让对象做一次release)3.谁retain,谁release4.谁alloc,谁release原创 2016-10-28 12:34:31 · 342 阅读 · 0 评论 -
@property的内存管理
1.set方法内存管理相关的参数* retain : release旧值,retain新值(适用于OC对象类型)* assign : 直接赋值(默认,适用于非OC对象类型)* copy : release旧值,copy新值2.是否要生成set方法* readwrite : 同时生成setter和getter的声明、实现(默认)* readonly : 只会生成get原创 2016-10-28 12:35:47 · 309 阅读 · 0 评论 -
autoreleaseyi应用
1.autorelease的基本用法 1> 会将对象放到一个自动释放池中 2> 当自动释放池被销毁时,会对池子里面的所有对象做一次release操作 3> 会返回对象本身 4> 调用完autorelease方法后,对象的计数器不变 2.autorelease的好处 1> 不用再关心对象释放的时间 2> 不用再关心什么时候调用release 3.autor原创 2016-10-28 12:37:04 · 278 阅读 · 0 评论 -
block
block要掌握的东西 1> 如何定义block变量 int (^sumBlock)(int, int); void (^myBlock)(); 2> 如何利用block封装代码 ^(int a, int b) { return a - b; }; ^() { NSLog(@"----------"); }; ^ {原创 2016-10-28 12:38:07 · 258 阅读 · 0 评论 -
@protocol 代理模式总结
1.协议的定义 @protocol 协议名称 // 方法声明列表.... @end 2.如何遵守协议 1> 类遵守协议 @interface 类名 : 父类名 @end 2> 协议遵守协议 @protocol 协议名称 @end 3.协议中方法声明的关键字 1> @required (默认) 要求实原创 2016-10-28 12:39:24 · 283 阅读 · 0 评论 -
OC结构体
#import int main(){/* NSRange(location length) NSPoint\CGPoint NSSize\CGSize NSRect\CGRect (CGPint CGSize) */ // NextStep Foundation // 比较两个点是否相同(x、y) BOOL b = CG原创 2016-10-28 12:41:02 · 311 阅读 · 0 评论 -
NSArray和NSSet
NarrayOC数组---只能存放OC对象OC数组不能存放nil值OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等这个array永远是空数组NSArray *array = [NSArray array];1、NSArray的创建NSArray *array2 = [N原创 2016-10-28 12:42:56 · 488 阅读 · 0 评论 -
NSDictionary
NSDictionary key ----> value 索引 ----> 文字内容 里面存储的东西都是键值对 字典的创建 普通创建 NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];原创 2016-10-28 12:44:40 · 245 阅读 · 0 评论 -
NSDate和NSValue
NADateint main(){ NSDate *date = [NSDate date]; // 日期格式化类 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; // y 年 M 月 d 日 // m 分 s 秒 H (24)时 h(1原创 2016-10-28 12:46:14 · 266 阅读 · 0 评论 -
OC的三大特性之多态
多态 1.没有继承就没有多态 2.代码的体现:父类类型的指针指向子类对象 3.好处:如果函数\方法参数中使用的是父类类型,可以传入父类、子类对象 4.局限性: 1> 父类类型的变量 不能 直接调用子类特有的方法。必须强转为子类类型变量后,才能直接调用子类特有的方法#import // 动物@interface Animal : NSObject- (voi原创 2016-10-25 14:58:31 · 306 阅读 · 0 评论 -
OC的三大特性之继承
继承的好处: 1> 抽取重复代码 2> 建立了类之间的关系 3> 子类可以拥有父类中的所有成员变量和方法 注意点: 1> 基本上所有类的根类是NSObject#import /********Animal的声明*******/@interface Animal : NSObject{ int _age; double _weight;原创 2016-10-25 14:57:14 · 301 阅读 · 0 评论 -
OC三大特性之封装
set方法 1.作用: 提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤 2.命名规范: 1> 方法名必须以set开头 2> set后面跟上成员变量的名称,成员变量的首字母必须大写 3> 返回值一定是void 4> 一定要接收一个参数,而且参数类型跟成员变量类型一致 5> 形参的名称不能跟成员变量名一样 */- (void)setAge:(in原创 2016-10-25 14:56:17 · 267 阅读 · 0 评论 -
数组和链表的区别
1. 从逻辑结构角度来看数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项)2. 从内存存储角度来看 数组从栈中分配空间, 对于程序员方便快速,但自由度小。原创 2016-10-12 23:48:21 · 244 阅读 · 0 评论 -
关于父类子类继承关系
一.继承:子类可以直接复用父类中的成员.子类继承父类所有方法的声明和实现 非私有的实例变量以及协议 继承时要在.h中声明一下 继承具有单根性和传递性继承的根类:大多都继承自 NSObject 类,所以在定义一个类时,要继承NSObject 类。继承就是代码优化公共部分交给父类例如:(Person是父类Worker 和Worker都继承了Person成为子原创 2016-10-25 14:19:53 · 858 阅读 · 0 评论 -
c语言知识点-1
这是在看视频过程中随手记下的一些容易忽略的知识点,记录的不规整,只是用于自己强化记忆1. 参与运算的数据是什么类型,结果也是什么类型,并且参与运算数据必须是同一类型,会进行自动类型转换double d=10/3 =3.00000,还有自动类型提升2. int size = sizeof (char);仅这种情况括号不能去掉3. c语言中,条件成立为真,不成立为假,任原创 2016-10-25 14:25:53 · 323 阅读 · 0 评论 -
C语言知识点-2
1.定义新函数注意,搞清楚调用新函数时是否需要传东西进来,即有没有参数,搞清楚函数执行完毕后要不要返回一个值给函数调用者,函数不能嵌套2.求和函数,改变函数内部形参的值并不会影响外面实参的值,基本数据类型作为函数形参,纯粹是值传递 3.省略返回值类型 test(),默认返回int类型,就算写了返回值类型,也可以不返回,但最好规范一点 4. 一个汉字占3个字符。原创 2016-10-25 14:28:51 · 388 阅读 · 0 评论 -
C语言知识点-3
1.指针与数组:用数组指针遍历数组每个元素,指针当作数组来用,int ages[5];int *p;p=ages;*p==ages[0]==p[0],*(p+2)==ages[2]==p[2],指针变量的p+1究竟加多少,取决于指针的类型,另外指针指向的是数组的首元素,并不是指向数组,这也和指针类型有关,指针是int类型,只能指向一个整数,而不是指向一个整型数组 2.字符串可以用字符数原创 2016-10-25 14:30:57 · 287 阅读 · 0 评论 -
C语言知识点-4
1.链接,是把项目中所有相关联的.o目标文件跟c语言函数库合并在一起,生成一个可执行文件2.[p walk] 代表给p所指向的对象发送一条walk消息3.成员变量是每个对象都有一份,而方法是对象共用一份4.类的实现地方是写方法的实现的,类的方法中,小括号只用来括住类型5.在函数中创建的对象,函数执行完毕,其他变量全部回收,只有对象会存在内存原创 2016-10-25 14:32:46 · 322 阅读 · 0 评论 -
C语言知识点-5
1.设计一个协议,必须遵守NSObject基协议2.所有的全局变量都是静态变量,被关键字static修饰的局部变量也是静态变量,程序运行之前创建,运行期间始终存在,直到程序结束,所有的局部变量都是默认情况下都是动态变量,存在于函数内部,函数执行完毕,自行销毁。静态变量只会执行一次,下次再调用static修饰的局部变量,此变量的值不会被重新初始化3.存储在硬盘寄存器中的变量称为寄存器变量,寄原创 2016-10-25 14:36:52 · 251 阅读 · 0 评论 -
变量
1、变量定义 变量类型 变量名; int score;2、变量的赋值 score = 20; score = a; score = b = 20;3、变量的输出 int a = 20; printf("%d", a);4、 1> %d或%i 整数(int) 2> %f 小数(原创 2016-10-25 14:38:33 · 212 阅读 · 0 评论 -
关系运算
逻辑与 条件1 && 条件2 int a = 10>3 && 7<6; int a = 0 && 10; printf("a=%d\n", a); int a = 10; int b = 10; int c = (a>5) && (++b>=11); int c = (a=11);原创 2016-10-25 14:40:49 · 281 阅读 · 0 评论 -
while循环
格式:while (条件) {循环体 }运行原理 1.如果一开始条件就不成立,永远不会执行循环体 2.如果条件成立,就会执行一次循环体,执行完毕,再次判断条件是否成立...... break 直接结束整个while循环 continue 结束当前的循环体,进入下一次循环体的执行int main(){ // 1.先确定需要重复执行原创 2016-10-25 14:42:11 · 452 阅读 · 0 评论 -
for循环
for (语句1; 条件; 语句2) { 循环体 } 语句1:初始化语句 语句2:增量语句(执行完循环体后再执行的语句) 1.for一开始就会执行一次语句1(整个for循环只会执行一次) 2.判断条件是否成立,如果条件成立,就会执行一次循环体,然后就会执行语句2,再次判断条件是否成立 #include int main(){ /原创 2016-10-25 14:43:27 · 295 阅读 · 0 评论 -
for循环嵌套
提示用户输入一个正整数n,如果n=5,就输出下列图形,其他n值以此类推***************#include int main(){ // 1.定义一个变量存储用户输入的值 int n = 0; // 一定要初始化 // 2.判断n值合不合理 while (n <= 0) { //原创 2016-10-25 14:44:34 · 472 阅读 · 0 评论 -
位运算符
按位与 &按位异或 ^ 1.相同数值进行异或,结果肯定是0,比如9^9 2.交换 9^5^6 == 9^6^5 3.任何数值跟0进行异或,结果还是原来的数值,9^0 == 9 4.a^b^a == a^a^b == 0^b == b按位取反 ~ ~0000 0000 0000 0000 0000 0000 0000原创 2016-10-25 14:45:45 · 249 阅读 · 0 评论 -
数组
几种写法: int ages[5] = {10 , 11, 12, 67, 56}; int ages[5] = {10, 11}; int ages[5] = {[3] = 10, [4] = 11}; int ages[] = {10, 11, 14};int main(){ // 数组的定义格式: 类型 数组名[元素个数]; in原创 2016-10-25 14:47:03 · 226 阅读 · 0 评论 -
指针
用指针交换两个参数的值:#include void swap(int *v1, int *v2);int main(){ /* int a = 10; int b = 11; swap(&a, &b); */ int a2 = 90; int b2 = 89; swap(&a2原创 2016-10-25 14:48:17 · 231 阅读 · 0 评论 -
递归
递归的2个条件: 1.函数自己调用自己 2.必须有个明确的返回值练习:设计一个函数,用来计算b的n次方#include int pow2(int b, int n);int main(){ int c = pow2(3, 2); printf("%d\n", c); return 0;}//递归的方式int pow2(原创 2016-10-25 14:54:15 · 263 阅读 · 0 评论