- 博客(53)
- 收藏
- 关注
原创 h文件和.c文件的分工
1. 单文件的坏处 一个文件的内容太多,不利于阅读、调试 多人修改同一个文件出问题 公司里面是团队合作 2. 将sum函数抽取到另一个.c文件中 先直接调用sum函数,编译警告、链接main.c错误 #include “sum.c” ,编译链接main.c,运行成功(画图分析.o文件中的东西) 如果avr.c中使用sum.c,编译链接main.c,运
2015-01-23 10:54:40 397
原创 C 语言内存分析
一、变量的内存分析1. 字节和地址为了更好地理解变量在内存中的存储细节,先来认识一下内存中的“字节”和“地址”。1> 内存以“字节为单位”0x表示的是十六进制,不用过于纠结,能看懂这些数字之间谁大谁小就行了2> 不同类型占用的字节是不一样的,数据越大,所需的字节数就越多 2. 变量的存储1> 所占用字节数跟类型有关,也跟编译器环境有关
2015-01-23 10:41:11 313
原创 NSObject和反射 --foundation
NSObject的常见用法l- (BOOL)isKindOfClass:(Class)aClass判断是否为aClass或者aClass的子类的实例l- (BOOL)isMemberOfClass:(Class)aClass判断是否为aClass的实例(不a包括aClass的子类)l- (BOOL)conformsToProtocol:(Prot
2015-01-22 16:20:54 348
原创 28- -NSDate-foundation
NSDate的静态初始化l+ (id)date返回当前时间l+ (id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs 返回以当前时间为基准,然后过了secs秒的时间l+ (id)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)sec
2015-01-22 16:20:04 260
原创 27-NSNumber、NSvalue
NSNumberlNSNumber可以将基本数据类型包装成对象,这样就可以间接将基本数据类型存进NSArray、NSDictionary等集合中l常见的初始化方法:l+ (NSNumber *)numberWithChar:(char)valuel+ (NSNumber *)numberWithInt:(int)valuel+ (NSNumber *)n
2015-01-22 16:19:13 230
原创 26--(补充)-NSDictionary、MutableDictionary
//// main.m// NSDictionary(NSMutableDictionary)//// Created by amesty on 15-1-18.// Copyright (c) 2015年 itcast. All rights reserved.//#import #import "Student
2015-01-22 16:18:40 284
原创 25-NSDictionary、MutableDictionary
l通过唯一的key找到对应的value,类似于Java的Mapl常见的创建NSDictionary的方法l+ (id)dictionaryl+ (id)dictionaryWithObject:(id)object forKey:(id NSCopying>)keyl+ (id)dictionaryWithObjectsAndKeys:(id)firstObje
2015-01-22 16:17:49 263
原创 24-(补充)NSArray(NSMutableArray)-Foundation
//// main.m// NSArray(NSMutableArray)-Foundation//// Created by amesty on 15-1-18.// Copyright (c) 2015年 itcast. All rights reserved.///** 1.NSArray 数组元素不可变。只能
2015-01-22 16:16:34 304
原创 23-NSArray(NSMutableArray)-Foundation
NSArrayl用来存储对象的有序列表,它是不可变的l不能直接存储C语言中的基本数据类型,如int、float、enum、struct,也不能存储nill创建NSArray的常用方法l+ (id)arrayl+ (id)arrayWithObject:(id)anObjectl+ (id)arrayWithObjects:(id)firs
2015-01-22 16:15:42 298
原创 22-指向指针的指针-foundation
参考文档地址:http://www.cnblogs.com/dzry/archive/2011/05/12/2044835.html int a[5] = {1, 2, 3, 4, 5}; int *p = a; int **point = &p;出point指针中存放的是p指针的地址。而p指针中存放的是a[0]的地址。所以*point和p
2015-01-22 16:13:37 284
原创 21(补充)-NSString,NSMutableString -foundation
// main.m// 19-NSString(NSMutableString)-foundation//// Created by amesty on 15-1-18.// Copyright (c) 2015年 itcast. All rights reserved.//#import #pragma mark NSS
2015-01-22 16:12:01 266
原创 20-NSString-foundation
首先理解内存空间分配 NSString * str = @“456"str为NSString *指针 栈空间 str—>( ffc2 ffc3) (NSString结构体类型指针存堆中地址) (ffc2 ffc3)两个字节 4 (ffc3 ffc4)
2015-01-22 16:10:27 300
原创 19-OC-copy语法
1.一般结结构体对象的copy和mutablecopy只有一种情况是浅拷贝:不可变对象调用copy方法时l一个对象使用copy或mutableCopy方法可以创建对象的副本lcopy – 需要先实现NSCoppying协议,创建的是不可变副本(如NSString、NSArray、NSDictionary)lmutableCopy – 需要先实现NSMutab
2015-01-22 16:08:10 396
原创 18-常见结构体-foundation
(一)NSRang的基本使用l在Foundation/NSRange.h中对NSRange的定义typedef struct _NSRange { NSUInteger location; NSUInteger length;} NSRange;// typedef unsigned long NSUInteger;l这个
2015-01-22 16:07:21 325
原创 17-block与指向函数的指针
//// main.m// Block补充//// Created by amesty on 15-1-14.// Copyright (c) 2015年 itcast. All rights reserved.//#import int sum(int a, int b) { return a
2015-01-22 16:04:18 261
原创 16-Protocol的定义与使用及block
协议单独写在一个文件中//// MyProtocal.h// Block和协议//// Created by amesty on 15-1-9.// Copyright (c) 2015年 itcast. All rights reserved.//#import //定义了一个名叫
2015-01-22 16:01:21 478
原创 15-Category的使用场景及用法
Category的使用场景:1、当你在定义类的时候,在某些情况下(例如需求变更),你可能想要为其中的某个或几个类中添加方法。2、一个类中包含了许多不同的方法需要实现,而这些方法需要不同团队的成员实现3、当你在使用基础类库中的类时,你可能希望这些类实现一些你需要的方法。当你在使用基础类库中的类时,你不想继承这些类而只想添加一些方法时。 遇到以上这些需求,Category可以帮助你
2015-01-22 15:59:41 555
原创 14-ARC自动引用内存使用及管理机制
// main.m// ARC的基本使用//// Created by amesty on 15-1-8.// Copyright (c) 2015年 itcast. All rights reserved.///* ARC的基本原理 (一)ARC的判断准则: 只要没有强指针指向对象,对象就会被释放。
2015-01-22 15:57:51 417
原创 @class
//// main.m// 循环retain//// Created by amesty on 15-1-8.// Copyright (c) 2015年 itcast. All rights reserved./*开发中类规范:1. 在 .h 文件中@class的作用仅仅声明某个名称是一个类 @class Card;
2015-01-22 15:57:35 356
原创 12-内存管理@property的参数
// main.m// @Property内存管理//// Created by amesty on 15-1-8.// Copyright (c) 2015年 itcast. All rights reserved.//#import #import "Person.h"#import"USer.h"#i
2015-01-22 15:56:51 240
原创 11.内存管理的set方法
(二)Set方法的代码规范(1)基本数据类型:直接复制-(void)setAge:(int)age{_age=age;}(2)OC对象类型-(void)setCar:(Car *)car{//1.先判断是不是新传进来的对象If(car!=_car){//2 对旧对象做一次release[_car
2015-01-22 15:53:18 278
原创 10-retain和release的简单使用
// Student.h// 内存管理1-retain和release的简单使用//#import @interface Student : NSObject@property int age;@end==============// Student.m// 内存管理1-reta
2015-01-22 15:50:16 508
原创 09-OC内存管理
一、基本原理(一)为什么要进行内存管理。由于移动设备的内存极其有限,所以每个APP所占的内存也是有限制的,当app所占用的内存较多时,系统就会发出内存警告,这时需要回收一些不需要再继续使用的内存空间,比如回收一些不再使用的对象和变量等。管理范围:任何继承NSObject的对象,对其他的基本数据类型无效。本质原因是因为对象和其他数据类型在系统中的存储空间不一样,其它局
2015-01-22 15:48:53 220
原创 08-property和synthesize
//// Student.h// property////#import @interface Student : NSObject { int _age; int _no; float _height;}// 当编译器遇到@property时,会自动展开成getter
2015-01-22 15:47:37 259
原创 07-空指针和野指针
一、什么是空指针和野指针1.空指针1> 没有存储任何内存地址的指针就称为空指针(NULL指针)2> 空指针就是被赋值为0的指针,在没有被具体初始化之前,其值为0。下面两个都是空指针:1 Student *s1 = NULL;2 3 Student *s2 = nil; 2.野指针"野指针"不是NULL指针,是指向"垃圾
2015-01-22 15:41:28 384
原创 06-self关键字
OC中有一个self关键字,用法跟Java中的this类似,都是代表着当前方法的调用者。但self和this还是有区别的。一、Java中的this只能用在动态方法中,不能用在静态方法中1.在动态方法中使用this关键字1 public class Student {2 private int age;3 public void setAge(
2015-01-22 15:38:28 219
原创 05-自定义构造方法和description方法(%@带打印一个对象的时候,会调用这个方法)
description方法 %@带打印一个对象的时候,会调用这个方法// Student.h// 构造方法////#import @interface Student : NSObject { int _age; int _no;}- (void)s
2015-01-22 15:35:49 492
原创 04.点语法
在Java中,我们可以通过"对象名.成员变量名"来访问对象的公共成员变量,这个就称为"点语法"。比如:1.在Student类的第2行定义了一个公共的成员变量age1 public class Student {2 public int age;3 }2.然后在第5行通过点语法直接给stu的成员变量age赋值1 public class Tes
2015-01-22 15:30:11 258
原创 03.第一个OC的类
一、语法简介1.类在Java中,我们用1个.java文件就可以描述清楚一个类;在OC中,一般用2个文件来描述一个类:1> .h:类的声明文件,用于声明成员变量、方法。类的声明使用关键字@interface和@end。注意:.h中的方法只是做一个声明,并不对方法进行实现。也就是说,只是说明一下方法名、方法的返回值类型、方法接收的参数类型而已,并不会编写方法内部
2015-01-22 15:27:27 235
原创 02-第一个OC程序解析
打开main.m文件,代码如下1.程序的入口点:main函数跟C程序一样,OC程序的入口点依然是main函数。在main.m的第3行已定义了一个main函数。 #import // import会自动检查当前的头文件是否被包含如果已经包含了,就不需要再次加载。int main(int argc, const char * argv[
2015-01-22 15:09:49 365
原创 01-Objective-C概述
1.没有包名(命名空间)的概念在Java中,为了防止两个类名相同的类冲突,你可以将这2个类放在不同的包里面。OC中并没有"包"的概念,也就是没有命名空间机制,取而代之的是开发人员给类名加上前缀,使用前缀可以有效的防止类名冲突。比如NSString(OC中的字符串类)、NSArray(OC的数组类),它们的前缀都是NS 2.关键字都以@开头1> 我在前面说到,OC代码
2015-01-22 15:02:41 269
原创 21.typedef
一、typedef作用简介* 我们可以使用typedef关键字为各种数据类型定义一个新名字(别名)。 1 #include 2 3 typedef int Integer; 4 typedef unsigned int UInterger; 5 6 typedef float Float; 7 8 int main(int argc, const ch
2015-01-22 14:57:54 253
原创 20.枚举
一、枚举的概念//// main.c// 枚举//// Created by mj on 13-3-28.// Copyright (c) 2013年 itcast. All rights reserved.//#include void test() { // 定义一种枚举类型
2015-01-22 14:55:09 237
原创 19.结构体
//// main.c// 结构体//// Created by mj on 13-3-28.// Copyright (c) 2013年 itcast. All rights reserved.//#include void test() { // 这个机构只能在函数内部使用
2015-01-22 14:49:07 294
原创 16.变量类型 自动变量 静态变量 寄存器变量
一、变量的作用域C语言根据变量作用域的不同,将变量分为局部变量和全局变量。1.局部变量1> 定义:在函数内部定义的变量,称为局部变量。形式参数也属于局部变量。2> 作用域:局部变量只在定义它的函数内部有效,即局部变量只有在定义它的函数内部使用,其它函数不能使用它。 2.全局变量1> 定义:在所有函数外部定义的变量,称为全局变量。2>
2015-01-22 14:46:32 623
原创 15-预处理指令1-宏定义、条件编译、文件包含
1.C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源程序(这个过程称为编译预处理),之后再进行通常的编译2.为了区分预处理指令和一般的C语句,所有预处理指令都以符号"#"开头,并且结尾不用分号3.预处理指令可以出现在程序的任何位置,它的作用范围是从它出现的位置到文件尾。习惯上我们尽可能将预处理指令写在源程序
2015-01-22 14:44:09 321
原创 14返回指针的函数与指向函数的指针
一、返回指针的函数 指针也是C语言中的一种数据类型,因此一个函数的返回值肯定可以是指针类型的。返回指针的函数的一般形式为:类型名 * 函数名(参数列表) 比如下面这个函数,返回一个指向char类型变量的指针int main(){ // 定义一个字符串变量 char str[] = "lmj";
2015-01-22 14:43:47 306
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人