2013年8月

首页2013年8月
31
Aug
0

新手学OC二:面向对象基础

类 抽象 封装 继承 ?多态等 面向对象理论略过

只记录OC是肿么实现的:

1.创建新文件会有两个.h .m 一个声明一个实现 .m里也可以声明私有变量等

.h:

@interface newClassName:parentClassName

{

dataType: member;

}

methods;

@end;

.m

@implementation newClassName

{

}

@end;

2.使用方法

+类方法

-实例方法

-(void)insertObject:(id)anObject atIndex:(NSUinteger)index

void 表示无返回值 ?id 为任意对象

3.static静态属性和c相同

4.object c的属性都需要私有化

必须要有get和set方法 在oc2.0中新增了语法糖?@property会创建默认get和set 不用@synthesize也可以

[c]

#import <Foundation/Foundation.h>

 

@interface abc : NSObject

{

NSInteger myString;

}

-(NSInteger)a;

-(void)setA:(NSInteger)tmpA;

-(void)print;

-(void)print:(NSInteger)ab;

 

@end

@implementation abc

static int sum;

+(abc *)Create

{

return [[abc alloc]init];

}

 

-(id)init

{

//? ? NSLog(@"lai guo!");

if (self == [super init]) {

myString = 78;

}

return self;

//? ? NSLog(@"lai guo!");

}

 

-(NSInteger)myString

{

return myString;

}

-(void)setA:(NSInteger)tmpA

{

sum = 100;

myString = tmpA;

}

 

-(void)print

{

printf("kkkkkkkkkkkkk \n");

}

-(void)print:(NSInteger)ab

{

printf("ab = %d \n",ab);

printf("sum = %d \n",sum);

}

 

@end

 

int main(int argc, const char * argv[])

{

 

@autoreleasepool {

// insert code here...

//? ? ? ? abc *aa = [abc Create];? //与下面等价

abc *aa = [[abc alloc]init];

NSInteger k;

k = 12;

NSLog(@"k = %d",k);

k = [aa myString];

NSLog(@"aa's a = %d",k);

[aa setA:45];

k = [aa myString];

NSLog(@"aa's a = %d",k);

[aa print];

[aa print:32];

[aa release];

}

return 0;

}

//============================

2013-08-31 21:54:09.212 ocTest[4537:303] k = 12

2013-08-31 21:54:09.214 ocTest[4537:303] aa's a = 78

2013-08-31 21:54:09.214 ocTest[4537:303] aa's a = 45

kkkkkkkkkkkkk?

ab = 32?

[/c]

 

30
Aug
0

新手学oc一:了解object c及基本数据类型

1.主界面

create a new xcode project; ?创建不用说了

connect to a repository ?从svn上签出方式

learn a bout using xcode

go to apple's developer portal

2.ide里的文件

pch:预编译好的文件

framework框架

products 产品: 已经生成的程序

[c]

#import <Foundation/Foundation.h> ?//Foundation框架里的foundation.h文件 ?import能保证只被包含一次

 

int main(int argc, const char * argv[])

{

//自动释放池

@autoreleasepool {

// insert code here...

NSLog(@"Hello, World!");

}

return 0;

}

[/c]

3.扩展

.c ? ?c语言源文件

.cc ?.cpp ? c++源文件

.h ?头文件

.m ?oc源文件

.mm ? oc++源文件

.pl ? perl源文件

.o ? 已编译文件

4.数据类型及格式符

Snip20130830_2

 

5.和c相同的要求有

变量名 函数名 数组名 常量 ?函数调用及结构体联合体 ?数学计算 ?条件判断 ?运算符优先级

if switch ?do while ?while for 等

30
Aug
0

新手学IOS开发一:界面与架构

1.nib文件的三个图标

a.file's owner表示从磁盘加载nib文件 代表nib文件的对象

b.first responder 用户正在交互的对象 运行中是不段变化的

c.view 对象视图 包容对象实例

2.视图控制

@property (nonatomic,retain)IBOutlet UIButton *myButton;

-(IBAction)doSomething:(id)sender;

3.MVC设计模式

model模型 - view视图 - controller控制

分离代码和用户界面 通过中间层controller通信

4.委托 就是协议

把实现方法 在其它的对象上重载

5.supporting files

应用程序图标 ?影音文件 ?文本文件 ?属性列表

.图标文件 png 57*57 ?.plist文件中icon file写上png文件名

6.文件夹层次与结构

可执行文件 固定的文件夹如插件等 ipa

7.沙盒

程序只能在沙盒里运行

任何读写沙盒以外的文件的尝试,都将被app store拒绝

拥有自己的library ?documents tmp文件夹

8.应用程序模板

single view application 基于视图的应用程序

empty application 基于窗口的应用程序

master-detail application 基于导航的应用程序

tabbed application 基于标签栏的应用程序

open GL Game 基于open gl es应用程序

utility application 实用工具应用程序

 

30
Aug
0

新手学c十一:内存管理

1.内存分为

代码段:存储程序代码

数据段:静态、全局数据(有初始化和未初始化是分开的)、 常量

堆区(heap):动态内存分配 主要类实例神马的吧 呵呵 不连续存放

栈区(stack):局部变量 函数参数 自动释放

2.动态内存使用必须引用 stdlib.h

void *malloc(unsigned int size); ?分配空间并复制原空间内容

free

[c]

int *p;

p = (int*)malloc(sizeof(int));//等效 p = malloc(sizeof(int))

if (p != NULL) {

*p = 4;

printf("*p = %d \n",*p);

free(p);

p = NULL;

}

else

{

printf("application is error!");

exit(EXIT_FAILURE);

}

//=======================

*p = 4?

[/c]

2.内存释放

a.free释放了内存 但指针仍然指向该位置 变成野指针

b.除了用free释放 还需要把指针初始化 p =NULL;

3.野指针成因:

a.指针未初始化

b.p被free后 没有置为null 让人误以为是个合法指针

c.指针操作超越了变量作用范围

4.realloc函数

a.malloc基础上增加free原空间内容(初始化为0)

b.改变已经分配的内存 用于增大空间的时候

、、======================

终于完成了初级学习了 ? 感觉没有想象中复杂啊

以前为毛认为那么复杂呢 搞不懂了

接下来重新进入oc部分 继续加油喔

30
Aug
0

新手学c十:位操作与预处理器

1.运算符包括:

& 与?? ?|或? ~取反? ?^异或? ?<<左移? ?>>右移 ? 6种

1字节 = 8位 ?第一位是符号位 1代表负数 0为正数

2.负数的位运算需要将原码转换成补码(原码取反再加1):

如:11010010 ?要转换成00101110

3.与运算

10101101

01101001&

----------------

00101001

使用场合:

a.清零特定位置 开关

b.取某数中的特定位

c.跟1算则不变 跟0则清零

4.或运算

10101101

01101001 ?|

--------

11101101

a.跟1算则真 跟0则不变

5.异或运算

10101101

01101001 ?^

--------

11000100

使用场合:

a.与自身异或 则全部位清零

b.与1异或使特定位值取反 ? 与0则原值不改变

c.不引入第三变量 交换两个变量的值?a = a^b; b= b^a;a=a^b;

6.求反运算

10101101 ?~

--------

01010010

7.左移运算 高位抹除

00001111 ?<< 1

--------

00011110

左移一位相当于*2

[c]

int a,b;

a = 4;

printf("a = %d \n",a);

b = a >> 1;

printf("b = %d \n",b);

//===================

a = 4?

b = 2?

[/c]

8.右移运算

0111 >> 1

---------------

0011

1001 >> 1

---------------

1100

相当于除以2 低位抹除

9.位域

一个字节八位 可以分别存多个开关的状态

struct 位域结构名

{

类型说明符 ?位域名:位域长度

};

a.位域长度不能超过该类型的位数

b.无名域名 表示填充 不能操作

struct srK

{

int a:1

int :2 //该2位不能使用

int b:3

int c:2

}

10.预处理

文件包含

#include <system file name>

#include "user file name" 先找工程文件里找

宏定义 分为有参和无参

无参:

#define 宏名 一串符号

a.名称需要大写

b.不需要加分号

有参:

#define??宏名(参数) 一串符号

#define sum(a,c) a + c * a;

int x = sum(4,3);

条件编译

a.

#define R first

#ifdef R ? ?//#ifndef

#else

#endif

b.

#if 常量表达式
程序段1
#else
程序段2
#endif