day:20130729
1.二进制转十进制
2.十进制转二进制
3.n位二进制的取值范围:0~2的n次方-1
4.64位编译器:long 8个字节 %ld
long long 8个字节 %lld
5.按位异或:相同数值进行异或,结果肯定是0,比如9^9;
交换:9^5^6=5^6^9;
任何数值跟0进行异或,结果还是原来的值,9^0=9;
a^b^a == b;
6.strlen:计算字符串长度(不包括\0)。从某个地址开始数字符的个数,直到遇到\0为止。一个汉字算作3个字符。
7.指针
7.1指针变量未经初始化,不要拿来访问其它存储空间.
8.%d int
%f float/double
%ld long
%lld long long
%zd unsigned long
9.内存分为五个区:
常量区:存放一些字符串
堆:对象
栈:存放局部变量
掌握:9.1定义字符串的2种方式
1》利用数组
char name[] = "helloworld";
特点:字符串里面的字符是可以修改的
使用场合:字符串的内容需要经常修改
2>利用指针
char *name = "helloworld";
特点:字符串其实是一个常量字符串,里面的字符是不能修改的
使用场合:字符串的内容不需要修改,而且这个字符串经常用到。
10.将数组当做函数参数传入的时候自动转为指针
11.#include<stdio.h>
void test()
{
printf("use test");
}
int main()
{
//(*p)是固定写法,代表指针变量p将来肯定是指向函数,左边的void指针变量p指向的函数没有返回值
//右边的()真正变量p指向的函数没有形参
void (*p)();
//指针变量p指向了test函数
p = test;
return 0;
}
12.结构体所占用的存储空间必须是最大成员字节数的倍数
13.static 和extern
对函数的作用:
默认情况下所有函数都是外部函数,extern声明和定义外部函数。
定义和声明一个内部函数,加static。
对变量的作用:
static对局部变量的作用:
static修饰局部变量:
1》延长局部变量的生命周期到程序技术时,局部变量才会被销毁
2》并没有改变局部变量的作用域
static修饰局部变量的使用场合:
1如果某个函数的调用频率特别高
2这个函数内部的某个值是固定不变的
全局变量分2种:
外部变量:定义的变量能被本文件和其它文件访问
1》默认情况下,所有的全局变量都是外部变量
内部变量:定义的变量只能被本文件访问,不能被其它文件访问。
static对变量的作用:定义一个内部变量
extern对变量的作用:声明一个外部变量
14.递归的两个条件:
1》函数自己调用自己
2》必须有明确的返回值
day:20130730
1.UIViewController
1.1管理UIView
1.2负责创建和销毁UIView
1.3处理UIView的所有事件
2.IBAction
2.1相当于void
2.2可以跟storyboard的控件进行连线
3.IBOutlet:可以连接storyboard中的控件
4.storyboard文件是用来描述软件界面的
5.连接UIViewController和控件
6.UIView的常见属性
1>superview 获得自己的父控件对象
@property(nonatomic,readonly)UIView *superview;
2>subviews获得自己的所有子控件对象
@property(non atomic,readonly,copy)NSArray *subview;
3>tag
@property(nonatomic) NSInterger tag;
控件的ID\标识,父控件可以通过tag来找到对应的子控件
4>frame
@property(nonatomic)CGRect frame;
控件所在矩形框的位置和尺寸(以父控件的左上角为坐标原点)
5>bounds
@property(non atomic)CGRect bounds;
控件所在矩形框的位置和尺寸(以自己为坐标原点,所以bounds的x\y永远为0)
6>center
@peoperty(nonatomic) CGPoint center;
控件中点的位置(以父控件的左上角为坐标原点)
7>transform
@property(nonatomic) CGAffineTransform transform;
控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)
总结:
1》修改UIView的尺寸(宽高):frame、bounds
2》修改UIView的位置:frame(左上角的位置)、center(中点的位置)
day:20130731
OC中方法重载:必须改变每个方法接受的参数的数量或至少一个参数的名称。
- (NSInteger) method1:(NSInteger)param1{ return param1;
}
- (NSString*) method1:(NSString *)param1 andParam2:(NSString *)param2{
NSString *result = param1;
if ([param1 length] > 0 &&
[param2 length] > 0){
result = [result stringByAppendingString:param2];
}
return result;
}
Here is an example of changing the name of a parameter: - (void) drawCircleWithCenter:(CGPoint)paramCenter radius:(CGFloat)paramRadius{
/* Draw the circle here */
}
- (void) drawCircleWithCenter:(CGPoint)paramCenter Radius:(CGFloat)paramRadius{
/* Draw the circle here */
}
day:20130801
ARC管理下的任何对象都会有一个存储属性:
strong:声明为strong类型的对象好izai执行时期自动保留在声明周期结束前都是有效的,并在结束后自动释放。这个关键字就像是OC传统内存管理方法中的retain。
weak:弱引用。凡是存在retain循环问题的多个对象,都可以为其确定一个父-子关系。通常情况下,父对象应该使用具有强引用特性的指针指向子对象。而子对象则应该使用具有弱引用特性的指针,指回子对象。这样就可以避免retain循环问题。若变量声明了这个关键字,当对象的变量指针被释放时,将会自动设为nil。
unsfae_unretained:这个属性表示只做简单的变量赋值。意思是在变量赋值时,将不会做retain保留对象。当程序释放了某个对象后,不会自动地将指向对象的具有__unsafe_unretained特性的指针设置为nil。
day:20130802
1.数组对象是一种collection对象,也称为容器(container)对象。数组对象只能保存指向Objective-C对象的指针,所以不能将基本类型的变量或C结构加入数组对象。
2.快速枚举
for(int i = 0; i < [item count];i++)
{
BNRItem *item = [items objectAtIndex:i];
NSLog(@"%@",item);
}
使用快速枚举代码:
for(BNRItem *item in items){
NSLog(@"%@",item);
}
3.初始化方法总结若干简单规则:
1》每个雷都要选定一个制定初始化方法。
2》其它初始化方法要调用指定初始化方法。
3》如果某个类所声明的指定初始化方法与其父类的不同,就必须覆盖父类的指定初始化方法并调用新的制定初始化方法。
4》类会继承父类所有的初始化方法,也可以为类加入任意数量的初始化方法。
4.栈是只内存中和堆分开的区域。为这两个内存区域分别取名堆和栈,是为了能够形象地描述这2个概念。堆,包含了大量无序的对象,需要通过指针来保存这些对象在堆中的地址。栈,则会按后进先出的规则保存一组帧。当程序执行某个方法或函数时,会从栈中分配一块内存空间,这块内存空间称为栈帧。栈帧负责保存程序在方法内声明的变量的值,
5.强引用和弱引用。只要保存了某个对象的地址,那么相应的对象就会多一个拥有方,并且不会被程序释放。这种指针特性称为强引用。此外,程序也可以选择让指针变量不影响其指向的对象的拥有方个数。这种不会改变对象拥有方个数的指针特性称为弱引用。
6.copy特性
例:
@property (non atomic,copy) NSString *itemName;
改用copy特性后,合成itemName后得到的存方法代码示例如下:
—(void)SetItemName:(NSString *)str
{
itemName = [str copy];
}
这段代码没有直接将传入的str赋给实例变量itemName,而是先向str所指向的对象发送了copy消息。该对象的copy方法会返回一个新的NSString实例,并且其拥有的数据会和收到的copy消息的那个对象相同。接着,新版本的setItemName:方法会为实例变量itemName赋值,指向新的NSString实例。copy方法返回iude是拥有强引用特性的指针,而收到copy消息的对象不会发生任何变化:该对象不会获得也不会失去拥有方,其数据 也不会发生任何变化。
7.在构建阶段,创建iOS应用的关键步骤是Compile Sources(编译源代码),Link Binary With Libraries(连接二进制代码和库),Copy Bundle Resource(拷贝程序包资源)。
8.CLLocationManager
initWithNibName:bandle:
setDesiredAccuracy
day:20130804
1.视图概念:
视图是UIView实例,或是UIView子类实例。
视图知道如何在应用窗口(UIWindow对象)上“画” 出自己。
视图会按层次结构排列,位于视图层次结构顶端的是应用的窗口。
视图可以处理事件,例如轻按(touch)事件。
2.UIWindow也是UIView的子类,任何一个应用都有且只有一个UIWindow对象。UIWindow对象就像一个容器,负责包含应用中的所有视图。应用需要在启动时创建这个对象。
OC基础语法:
1.#import用途:1>跟#include一样,拷贝文件的内容
2>可以自动防止文件的内容被重复拷贝
2.运行过程:
编写oc文件:.m .c
编译: cc -c .m
链接:cc xxx.o xxx.0 -framework Foundation(只有用到Foundation框架才需要加上framework)
运行:./a.out
3.冒号也是方法名的一部分