- 博客(18)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 OC桥接转换
Objective-C中的ARC机制不能使用C的结构指针, 而cocoa 为基于C鱼呀你的 Core Foundation框架 和 Foundation 框架数据类型提供了互用性, 这种功能称为直接桥接。隐式类型转换CFStringRef cstr = CFStringCreateWithString(NULL, "Hello, World!", KCFStringEncodingASCII);NS
2015-11-30 14:28:41 363
原创 OC 循环引用
ARC已经出来很久了,自动释放内存的确很方便,但是并非绝对安全绝对不会产生内存泄露。导致iOS对象无法按预期释放的一个无形杀手是——循环引用。循环引用可以简单理解为A引用了B,而B又引用了A,双方都同时保持对方的一个引用,导致任何时候引用计数都不为0,始终无法释放。若当前对象是一个ViewController,则在dismiss或者pop之后其dealloc无法被调用,在频繁的push或者prese
2015-11-29 19:58:03 469
原创 OC动态绑定
参考: http://www.onevcat.com/2012/04/objective-c-runtime/ http://justsee.iteye.com/blog/2019541 多态:允许不同的类定义相同的方法。动态类型:程序直到执行时才能确定所属的类。动态绑定:程序直到执行时才能确定实际要调用的方法。id类型:一种通用的对象类型,也就是说,id可以用来存储属于任何类的对象,让不同类
2015-11-28 20:21:01 719
原创 Objective-C RunTime机制(1)
Objective-C 是面相运行时的语言(runtime oriented language),就是说它会尽可能的把编译和链接时要执行的逻辑延迟到运行时。这就给了你很大的灵活性,你可以按需要把消息重定向给合适的对象,你甚 至可以交换方法的实现,等等(译注:在 Objective-C 中调用一个对象的方法可以看成向一个对象发送消息, Method Swizzling 具体实现可以参看 jrswizz
2015-11-27 10:54:56 358
原创 C++ 学习 (static_cast、 volatile 等)
volatile ,变量修饰符,用于表示此变量是变化的,存取值时,会从内存直接读取,而不进行优化。 注意: (1) 可以把一个非 volatile int 赋给 volatile int,但是不能把非 volatile 对象赋给一个 volatile 对象。 (2) 除了基本类型外,对用户定义类型也可以用 volatile 类型进行修饰。 (3) C++ 中一个有 volatile 标识符的
2015-11-24 10:24:28 450
原创 c++学习(函数模板, 类模板)<2>
ps: 不知道为什么<1> 的后面显示不全 。。。 即使删一点前面的文字也显示不全。。。。,等有机会了一定自己搭博客而如果加上const:int big(const T &a,const T &b)那么就可以: cout<template<class type,int width> //type为类型参数,width为非类型参数在类A中声明了两个类型为T的成员变量a和b,还声明了一个返回类型为T
2015-11-23 13:58:44 281
原创 c++学习(函数模板, 类模板)<1>
函数模板 模板形参不能为空。一但声明了模板函数就可以用模板函数的形参名声明类中的成员变量和成员函数,即可以在该函数中使用内置类型的地方都可以使用模板形参名,声明了形参,而没有使用,会不通过编译。额我的是这样template <typename T>or template <class T>template 与 <> 之间必须无其他内容。 DEMO#include <iostream>#i
2015-11-23 11:07:37 241
原创 C++ 学习(虚基类)
#include //基类using namespace std;class CBase{protected: int a;public: CBase(int na) { a=na; cout<<"CBase constructor! "<<endl; } ~CBase(){cout<<"CBase decons
2015-11-22 15:37:50 350
原创 C++ 学习(继承和动态内存分配)
1> 派生类不使用newclass baseDMA{ private: char * label; int rating; public: baseDMA(const char *l = "null", int r = 0); baseDMA(const baseDMA & rs); virtual ~baseDMA(); baseDMA & operator
2015-11-21 14:33:43 367 1
原创 C++ 学习(虚函数)
1>静态联编,动态联编 将源代码中的函数调用解释为执行特定的函数代码块被称为函数名联编 在C语言中,没有函数的重载,所以,在编译过程中就可以完成函数的联编,这种叫静态联编。 而C++中,虚函数的使用,使得在编译过程中我们无法得知使用的是哪一个,所以编译器 只能在程序运行时选择正确的虚函数代码,这种叫动态联编。2> 虚函数的工作原理 编译器处理虚函数的方法: 给每个对象添加一
2015-11-21 13:51:00 231
原创 IOS block
准备走ios开发之一块,但是感觉C/C++的底子还是不够,既然之前学过,趁着刚刚学oc,还能做个对比什么的。参考:http://www.ithao123.cn/content-5613988.html http://www.cnblogs.com/wustlj/archive/2013/08/12/3252152.html http://www.dreamingwish.com/article
2015-11-20 18:01:41 234
原创 C++ 学习(类的继承,派生)
基类指针或引用只能调用基类方法,但基类只能跟引用之只能调用基类继承过来的方法, 不可以将基类指针或引用赋值给派生类指针或者引用#include <iostream>#include <stdio.h>using namespace std;class Person{ public: string name; int age; Person(){}; P
2015-11-20 10:07:27 302
原创 C++学习 (使用类)
友元函数, 常用的是对<<的重载#include <stdio.h>#include <iostream>using namespace std;struct node{ double x; double y; node(){}; node(int _x, int _y){ x =(double) _x; y = (double)
2015-11-19 18:22:33 231
原创 Disk Storage(微软笔试)
http://hihocoder.com/contest/hiho72/problem/1#include <iostream>#include <stdio.h>#include <vector>#include <algorithm>#include <string.h>using namespace std;#define MAXN 100010int val[MAXN];int
2015-11-19 17:58:11 290
原创 C++ 学习 new
new 还有一种形式是布局new , int buffer2 = new int [10]; int * p4=new (buffer2) int [20];`则 以p4为首地址的数组,会使buffer2的为首地址的内存块 placement new操作符使用的是静态内存,而不是动态分配的内存。这就意味着,不能用delete操作符来对它进行内存释放当两个new出来的内存是根据同一个类型的首地址
2015-11-18 21:11:47 342
原创 C++ 学习 (static, extern)
首先从静态变量说起. C++里面静态变量有三种: 分别是外部链接性,内部链接性和无链接性. 声明外部链接的变量的方法是在代码块外面声明它. 此变量是全局变量,多文件中亦可用. 声明内部链接的变量的方法是在代码块外面声明它并加上static限定符. 此变量是全局变量,但仅在本文件中可用. 声明无链接的变量的方法是在代码块里面声明它并加上static限定符. 此变量是局部变量,但仅在本
2015-11-18 20:15:47 251
原创 c++学习 ( new, delete)
c++是面向对象的编程语言, 其强调的是在运行阶段进行决策,而不是在编译阶段, 所以引入 new ,delete 等 来进行动态内存分配 new 返回的是一个地址, 如 int *p = new int; int *arr = new int [10]; 此时 new 返回的是一个可以容纳int类型的地址。 计算机可能会由于没有足够的内存而无法满足new,在这种情况下new会返回0
2015-11-17 18:34:20 338
原创 C++ 学习
union (共用体) 共用体里可以包含多个变量类型,他们公用一块内存,也就是说,每次只能出现一个, example : union test{ int a; double b; } 共用体test 中的a, b使用同一块内存,只能调用test.a or test.b二者绝对不能同
2015-11-17 18:23:28 232
iOS app 模拟器图片显示不全
2016-01-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人