- 博客(19)
- 收藏
- 关注
原创 二十六天( UI开始)
button,textfield,label主要代码#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; CGSize size=[UIScr
2015-11-23 17:06:36 331
原创 二十三天
内存管理:copy,拷贝的时候不会对引用计数器作出任何改变,要遵循NSCopying协议,实现NSCopying协议中的方法。因为是拷贝,所以定义的成员属性是等于self->成员属性。用assign也不会加1;NSString类型的retainCount为-1 (NSString 存储的内容是变量(不可以被改变));内存管理ARC:(不用空间就释放掉)strong----
2015-11-19 09:34:42 255
原创 二十二天
代码块:可以做数据类型,可以作为参数,与函数指针不同,代码块必须赋值一块代码。NSUInteger-----基本数据类型(比较特殊),不需要对象,就是不需要加上*objective-c内存管理:管理内存的原因:内存有限,MRC-人工引用记数ARC-自动引用记数retain--引用计数器+1release-引用计数器-1retainCount-获取当前的引用的计数器值
2015-11-18 09:24:42 349
原创 第二十一天
协议:新建协议:objective-c file。protocol协议语法:@protocol 协议名协议方法声明@optional---可以遵循的协议方法声明@required ---必须执行的协议方法声明协议:协议只能声明方法--不能声明变量,只要遵循一个协议,那么这个类就就包含协议的所有方法,协议具有继承性,可以被继承,可以遵循多个协议, 实现代理模式
2015-11-17 09:54:26 284
原创 第二十天
@class 用在两个类交叉去声明的时候,只是声明类,如果用到类中的方法,就要去用#import来导入头文件。id类型---相当于void*, 通用的指针类型,可以指向任意对象。本身就是指针类型,所以定义的时候不需要加上* 例如: id new=[类名 new]; 也可以用在:类名 *new=[类名 new]; id newone=new; 然后newone就可以调用类中的对
2015-11-16 09:13:55 346
原创 十九天(待编辑修改)
集合:NSSet---不可变 NSMutableSet------可变 NSIndexSet---------存储有序的索引到某种数据结构1.NSSet(不可变集合)可变集合和不可变集合的方法都是通用的,因为可变集合是不可变集合的子类。初始化集合NSSet *set1=[NSSet setWithObjects:@1,@3,@5,@7,nil];NSMu
2015-11-14 15:06:04 384
原创 第十六天
在用set和get方法的时候person.age=10;实际调用的是[person stage:10]; NSLog(@"%d",person.age)实际调用的是[person age];不使用get和set方法可以使用@property int a,b; @synthesize a,b;使用get和set的方法作用是隐藏成员变量,过滤对成员变量操作的数据,对象点操作。类方法中能调
2015-11-11 09:18:06 396
原创 第十五天
类的封装性:内部的方法可以随便使用成员属性。访问私有类型和保护类型成员变量只能通过类的成员方法访问使用get和set方法:给保护类型和私有类型的数据一个对外开发接口,保护成员变量不被外界破坏(过滤非法数据),更好地隐藏成员变量set方法:set+变量名get方法:只写变量名就可以
2015-11-10 12:39:33 343
原创 第十四天(正式开始oc学习,持续时间大概两个星期)
库制作:保护知识产权( 把原文件隐藏)1.把所有原文件.c编译成二进制文件.o文件2.把二进制文件打包成库gcc -shared -o libfie.so file.o ......(等.o文件)3. 编译程序时候gcc -o main main.c -L(libfile .so所在的路径 ) -lfie(指定库名)编译流程:预处理,编译,汇编gcc-o a
2015-11-09 09:39:00 578
原创 第十三天
输入一个整数进行二进制的转换(使用链栈,链栈的详细代码可以看上一篇文章的末尾处)比如输入121,要求输出的数的是121的二进制转换后的数,就是010110这些二进制数。首先把链栈写好.h文件://// stack.h// //// Created by FD on 15/11/6.////#ifndef stack_h#define stack_h#in
2015-11-08 09:53:39 295
原创 第十二天
昨天没写,今天补上单向链表:.h文件//// linklist.h// //// Created by FD on 15/11/7.////#ifndef linklist_h#define linklist_h#include #include #include typedef struct linklist{ int data; s
2015-11-08 09:45:17 269
原创 第十一天
链表模版:宿主结构(带数据的结构体)typedef struct student{int age;struct list_head list;}student;struct list_head{struct list_head* prev;struct list_head* next;}创建宿主结构student *st
2015-11-06 14:22:28 289
原创 第十天
链表:单向链表 双向链表单向链表:typedef struct linkList{int data;struct linkList *next;}linkList;双向链表:typedef struct DlinkList{int data;struct DlinkList* next;struct Dlinklist *prev;}Dlin
2015-11-05 14:39:28 318
原创 第九天
结构体定义的时候不占空间,只有在定义了结构体对象后才占空间。tyoedef stuct Node{int a;char b;}Node;struct Node n1;struct Node *p=&n1;Node *q=(Node*)malloc(sizeof(Node));q->a=10;q->b='b';把结构体空间放进堆里面。练习:写一个函数对Node指针分配空间,
2015-11-04 09:26:06 329
原创 第八天(练习)
非法的转义字符:'\xaa', ‘\018’是合法的转义字符,因为'\0'是合法的。不管后面是什么都是合法的。当while没有循环体的时候,就是一个死循环。int k=0;do{++k;}while(k>=0);// 注意int的取值范围,所有还是有可能会跳出循环的。struct Node{int data;double(*p)[10];char *buf[10];bool
2015-11-03 19:20:33 624
原创 第七天(c内存)
内存,程序在内存中运行。(进程)栈:存放的是值类型数据,前提是局部变量,是由系统分配和释放的,效率高,优先使用栈空间,优先使用局部变量。两个函数中相同名字的常量在栈中是不会冲突的,因为存放的区域并不一样。堆:存放的是引用类型的,用户自己分配,自己释放malloc---freevoid *malloc(分配空间大小);int *p=malloc;free(
2015-11-02 09:25:48 305
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人