近期OC学习



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.冒号也是方法名的一部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值