iOS开发-C 和 OC 知识总结
2016-03-10 10:25
381 查看
1 . 冒泡排序
void bullut(intarray[],intcount){
for(inti
=0; i < count - 1;
i++) {
for(intj
=0; j < count -1-
i; j++) {
if (array[j] > array[j +1]) {
int temp = array[j];
array[j] = array[j +
1];
array[j +
1] = temp;
}
}
}
}
NSMutableArray *bullutArray = [NSMutableArrayarrayWithArray:@[@"3",@"4",@"6",@"1"]];
NSString *temp;
for (int i =0; i <bullutArray.count; i++)
{
for (int j =0; j <bullutArray.count -1
- i; j++) {
if ([[bullutArrayobjectAtIndex:j]integerValue] > [[bullutArrayobjectAtIndex:j
+ 1]integerValue]) {
temp = [bullutArrayobjectAtIndex:j];
[bullutArrayreplaceObjectAtIndex:jwithObject:[bullutArrayobjectAtIndex:j
+1]];
[bullutArrayreplaceObjectAtIndex:j +1withObject:temp];
}
}
}
2 . 内存的五大区
栈区:栈区里面的内存是由系统自动分配和释放,不需要程序员管理
先进后出,后进先出
一般局部变量和函数的形参都在栈区,作用域在函数内部
堆区:
堆区的内存分配和释放是由程序员管理
常量区:
注意:常量区的内容不允许被修改!!!
全局静态:
放在全局静态的变量只会初始化一次
变量的生命周期比较长,在程序退出时才会被销毁
代码区: 存放二进制文件的区域
比如:函数
当使用函数时,函数的形参会被临时存到栈区
3 . 属性的属性
#pragma mark - 3属性的属性
//在使用属性的时候,有三类词语去详细说明属性的细节
//第一类:读写性
@propertyint
num;
@property (readonly)int
numA;
// readonly代表只读:只生成get方法
@property (readwrite)int
numB; //默认
// readwrite代表读写,既有set和
get方法
//第二类:原子性(非原子性,原子性)
@property(atomic
)BOOL resultA;//默认
// atomic原子性,和多线程相关,线程安全性高
@property(nonatomic
)BOOL resultB;
// nonatomic非原子性,执行能够效率高,经常用到
//第三类:语义设置(内存)
//三个形容词 assign
retain copy
@property (assign)float
height;
//基本数据类型用assign比如int
float CGfloat
@property (retain)NSArray
*array;//NSArray是oc中的数组
//oc数据类型用retain
@property (copy)NSString
*str;
//当属性需要被拷贝的时候,比如NSString就用copy唯一特别的
4 . ARC(自动管理机制 ) MRC(手动管理机制)
- (void)setName:(NSString
*)name{
// _name = name;
//考虑内存优化ARC(自动管理内存机制)
——>MRC手动管理内存机制
//从内存角度去考虑实现set方法
//这也是使用@synthesize后,系统生成的set方法
//第一步判断传入的形参是否和原来的实例变量一样
if (_name
!= name) {
//第二步如果不一样,就使用release方法将原来的释放掉
[_namerelease];//释放原来的实例变量
//第三步再给实例变量赋值
_name = [namecopy];//形参调用copy方法,赋给实例变量
//copy (NSString)是可变的,retain
(oc类型)
//当属性用retain修饰时,将下面的这行代码copy变成retain
}
// 基本数据类型不需要考虑内存优化
// NSInteger 相当于long
}
- (NSString *)name{
// return _name;
return [[_nameretain]autorelease];//retain不变,一直不变
//无论属性用retain还是copy,get的方法都用retain
}
5 . 内存黄金法则
#pragma mark -
知识点1内存管理(针对对象使用,在堆区使用)
//
内存管理机制分为ARC和MRC,并且ARC是以MRC为基础的
// ARC
是xcode5.0开始的
//
垃圾回收机制适用于Java
// 通过‘引用计数‘的概念来管理内存
// 引用计数表示的是对象被引用的次数
# pragma mark -
知识点2内存管理黄金法则
/*
1
当使用new,alloc,copy方法,对象的引用计数会0 ->1
2当使用retain方法时,代表拥有了对象的使用权,此时的对象引用器会在原来基础上加1
3
当使用release方法时,对象的引用计数-1
4
当你使用alloc retain copy new方法时,需要对对象进行release或者autorelease操作
5
谁alloc,谁负责release
6当对象的引用计数器的值为0时,对象就会被系统回收
*/
6 . KVC
#pragma mark -
知识点 KVC
// kvc (间接访问实例变量的方法),在实例变量没有set
get方法的情况下,仍然可以访问
// key - value - coding键值编码
// 其中
// setValue forKey 相当于set方法
// setValue forKeyPath 相当于set方法
// valueForKey 相当于get方法
// valueForKeyPath 相当于get方法
7
. 类目 和 延展
类目:是为现有的类增加功能,注意:只能增加方法,不能增加实例变量或属性。
类目里的方法,只能是这个现有的类或者子类使用
延展:未类增加私有属性和方法
void bullut(intarray[],intcount){
for(inti
=0; i < count - 1;
i++) {
for(intj
=0; j < count -1-
i; j++) {
if (array[j] > array[j +1]) {
int temp = array[j];
array[j] = array[j +
1];
array[j +
1] = temp;
}
}
}
}
NSMutableArray *bullutArray = [NSMutableArrayarrayWithArray:@[@"3",@"4",@"6",@"1"]];
NSString *temp;
for (int i =0; i <bullutArray.count; i++)
{
for (int j =0; j <bullutArray.count -1
- i; j++) {
if ([[bullutArrayobjectAtIndex:j]integerValue] > [[bullutArrayobjectAtIndex:j
+ 1]integerValue]) {
temp = [bullutArrayobjectAtIndex:j];
[bullutArrayreplaceObjectAtIndex:jwithObject:[bullutArrayobjectAtIndex:j
+1]];
[bullutArrayreplaceObjectAtIndex:j +1withObject:temp];
}
}
}
2 . 内存的五大区
栈区:栈区里面的内存是由系统自动分配和释放,不需要程序员管理
先进后出,后进先出
一般局部变量和函数的形参都在栈区,作用域在函数内部
堆区:
堆区的内存分配和释放是由程序员管理
常量区:
注意:常量区的内容不允许被修改!!!
全局静态:
放在全局静态的变量只会初始化一次
变量的生命周期比较长,在程序退出时才会被销毁
代码区: 存放二进制文件的区域
比如:函数
当使用函数时,函数的形参会被临时存到栈区
3 . 属性的属性
#pragma mark - 3属性的属性
//在使用属性的时候,有三类词语去详细说明属性的细节
//第一类:读写性
@propertyint
num;
@property (readonly)int
numA;
// readonly代表只读:只生成get方法
@property (readwrite)int
numB; //默认
// readwrite代表读写,既有set和
get方法
//第二类:原子性(非原子性,原子性)
@property(atomic
)BOOL resultA;//默认
// atomic原子性,和多线程相关,线程安全性高
@property(nonatomic
)BOOL resultB;
// nonatomic非原子性,执行能够效率高,经常用到
//第三类:语义设置(内存)
//三个形容词 assign
retain copy
@property (assign)float
height;
//基本数据类型用assign比如int
float CGfloat
@property (retain)NSArray
*array;//NSArray是oc中的数组
//oc数据类型用retain
@property (copy)NSString
*str;
//当属性需要被拷贝的时候,比如NSString就用copy唯一特别的
4 . ARC(自动管理机制 ) MRC(手动管理机制)
- (void)setName:(NSString
*)name{
// _name = name;
//考虑内存优化ARC(自动管理内存机制)
——>MRC手动管理内存机制
//从内存角度去考虑实现set方法
//这也是使用@synthesize后,系统生成的set方法
//第一步判断传入的形参是否和原来的实例变量一样
if (_name
!= name) {
//第二步如果不一样,就使用release方法将原来的释放掉
[_namerelease];//释放原来的实例变量
//第三步再给实例变量赋值
_name = [namecopy];//形参调用copy方法,赋给实例变量
//copy (NSString)是可变的,retain
(oc类型)
//当属性用retain修饰时,将下面的这行代码copy变成retain
}
// 基本数据类型不需要考虑内存优化
// NSInteger 相当于long
}
- (NSString *)name{
// return _name;
return [[_nameretain]autorelease];//retain不变,一直不变
//无论属性用retain还是copy,get的方法都用retain
}
5 . 内存黄金法则
#pragma mark -
知识点1内存管理(针对对象使用,在堆区使用)
//
内存管理机制分为ARC和MRC,并且ARC是以MRC为基础的
// ARC
是xcode5.0开始的
//
垃圾回收机制适用于Java
// 通过‘引用计数‘的概念来管理内存
// 引用计数表示的是对象被引用的次数
# pragma mark -
知识点2内存管理黄金法则
/*
1
当使用new,alloc,copy方法,对象的引用计数会0 ->1
2当使用retain方法时,代表拥有了对象的使用权,此时的对象引用器会在原来基础上加1
3
当使用release方法时,对象的引用计数-1
4
当你使用alloc retain copy new方法时,需要对对象进行release或者autorelease操作
5
谁alloc,谁负责release
6当对象的引用计数器的值为0时,对象就会被系统回收
*/
6 . KVC
#pragma mark -
知识点 KVC
// kvc (间接访问实例变量的方法),在实例变量没有set
get方法的情况下,仍然可以访问
// key - value - coding键值编码
// 其中
// setValue forKey 相当于set方法
// setValue forKeyPath 相当于set方法
// valueForKey 相当于get方法
// valueForKeyPath 相当于get方法
7
. 类目 和 延展
类目:是为现有的类增加功能,注意:只能增加方法,不能增加实例变量或属性。
类目里的方法,只能是这个现有的类或者子类使用
延展:未类增加私有属性和方法
相关文章推荐
- IOS开发--常用的基本GDB命令
- iOS开发--验证码
- 【转】让iframe在iOS设备手机浏览器上支持滚动
- iOS开发动画(Animation)总结
- 关于IOS delegate的weak和assign 探讨
- iOS Github最近很火的夜间模式
- 自定义导航searchBar
- iOS猜拳游戏源码
- 全面理解iOS开发中的Scroll View
- ios html5 网页取消默认样式
- 【Xamarin挖墙脚系列:打造独特的Xamarin.IOS开发环境】
- oc 10进制数转16进制字符串
- nagios+plugin+pnp4nagios+rrdtool实现图形化监控
- iOS开发中常用第三方库的整理
- 深入解析iOS应用开发中九宫格视图布局的相关计算方法
- iOS Socket UDP编程-C语言版
- iOS Socket理论知识
- IOS中关于NSTimer使用知多少
- iOS个人整理25-瀑布流效果
- iOS 修改navigation的back按钮