http://blog.csdn.net/david21984/article/details/57451917
http://www.cnblogs.com/bossren/p/6401067.html
http://www.cnblogs.com/bossren/p/6401067.html
http://www.jianshu.com/p/cbbce3818440
https://mp.weixin.qq.com/s?__biz=MzAxMzE2Mjc2Ng==&mid=504672382&idx=1&sn=8fdc7909c48c5ae094bfc06ac1f21fb8&chksm=0046d01f373159093a99da48ef119a5a16b1c0015d680ba932da43a2b1c600c8d8ba6163cb72&mpshare=1&scene=1&srcid=0724kRv5yxhAv5iWjnB69Zry&pass_ticket=sOx9ktwT151QujUkRF%2FkHnsfxW5bp22TJAngHwEgKTg%3D#rd
https://github.com/jobbole/awesome-ios-cn
http://www.jianshu.com/p/ff36c9dcf50b
http://www.jianshu.com/p/ff36c9dcf50b
http://www.jianshu.com/p/ff36c9dcf50b
git@git.corp.plu.cn:LongzhuLiveiOSGroup/LongzhuLive_iOS.git
本人 15:34:40
给你们一批账号
15000000001~~~15000000060都可以用
密码基本上都是111111111w,前面几个账号里面还有龙币,
15000000099,98,97有开播权限
本人 15:04:06
http://www.jianshu.com/p/9c450e512020
本人 15:32:14
iOS 逆天框架 FLEX
本人 15:51:56
http://cdn.cocimg.com/bbs/attachment/Fid_6/6_24457_90eabb4ed5b3863.pdf
本人 16:36:27
http://www.cocoachina.com/ios/20150225/11163.html
本人 19:28:31
https://blog.cnbluebox.com/blog/2014/04/15/gitlabde-shi-yong/
本人 10:41:12
http://www.jianshu.com/p/f970872fdc22
本人 15:06:31
http://www.jianshu.com/p/e89cd880c1d8
本人 11:02:11
https://segmentfault.com/a/1190000005022705
本人 11:03:07
http://www.jianshu.com/p/76614766b2ea
本人 17:02:29
兰凤生化 富邦股份
本人 12:45:43
https://www.2cto.com/kf/201410/344597.html
本人 12:48:20
先从当前class的cache方法列表(cache methodLists)里去找
找到了,跳到对应函数实现
没找到,就从class的方法列表(methodLists)里找
还找不到,就到super class的方法列表里找,直到找到基类(NSObject)为止
最后再找不到,就会进入动态方法解析和消息转发的机制。(这部分知识,下次再细谈)
本人 13:05:02
http://blog.csdn.net/david21984/article/details/57451917
本人 13:05:17
http://www.jianshu.com/p/e89cd880c1d8
本人 13:05:29
http://www.jianshu.com/p/76614766b2ea
本人 13:05:41
https://segmentfault.com/a/1190000005022705
本人 13:05:52
http://www.jianshu.com/p/9c450e512020
本人 13:06:07
http://www.cnblogs.com/bossren/p/6401067.html
本人 20:54:48
http://www.jianshu.com/p/3c95baccaf61
本人 21:13:12
http://blog.csdn.net/lizhilin_vip/article/details/53185423
本人 21:13:23
给你们一批账号
15000000001~~~15000000060都可以用
密码基本上都是111111111w,前面几个账号里面还有龙币,
15000000099,98,97有开播权限
本人 15:04:06
http://www.jianshu.com/p/9c450e512020
本人 15:32:14
iOS 逆天框架 FLEX
本人 15:51:56
http://cdn.cocimg.com/bbs/attachment/Fid_6/6_24457_90eabb4ed5b3863.pdf
本人 16:36:27
http://www.cocoachina.com/ios/20150225/11163.html
本人 19:28:31
https://blog.cnbluebox.com/blog/2014/04/15/gitlabde-shi-yong/
本人 10:41:12
http://www.jianshu.com/p/f970872fdc22
本人 15:06:31
http://www.jianshu.com/p/e89cd880c1d8
本人 11:02:11
https://segmentfault.com/a/1190000005022705
本人 11:03:07
http://www.jianshu.com/p/76614766b2ea
本人 17:02:29
兰凤生化 富邦股份
本人 12:45:43
https://www.2cto.com/kf/201410/344597.html
本人 12:48:20
先从当前class的cache方法列表(cache methodLists)里去找
找到了,跳到对应函数实现
没找到,就从class的方法列表(methodLists)里找
还找不到,就到super class的方法列表里找,直到找到基类(NSObject)为止
最后再找不到,就会进入动态方法解析和消息转发的机制。(这部分知识,下次再细谈)
本人 13:05:02
http://blog.csdn.net/david21984/article/details/57451917
本人 13:05:17
http://www.jianshu.com/p/e89cd880c1d8
本人 13:05:29
http://www.jianshu.com/p/76614766b2ea
本人 13:05:41
https://segmentfault.com/a/1190000005022705
本人 13:05:52
http://www.jianshu.com/p/9c450e512020
本人 13:06:07
http://www.cnblogs.com/bossren/p/6401067.html
本人 20:54:46
http://www.jianshu.com/p/3c95baccaf61
本人 21:13:10
http://blog.csdn.net/lizhilin_vip/article/details/53185423
本人 21:54:24
http://www.kanzhun.com/gsmsh10532698.html?ka=recommend-interview-showall5
本人 21:59:52
http://www.jianshu.com/p/2bf505398f51
本人 22:01:19
http://www.jianshu.com/p/715417b93991
本人 22:04:44
问了很多数据结构和算法的问题,比如链表的操作,操作系统对内存空间的使用情况,和一些类似智力题的问题。个人感觉需要计算机整个体系有一个比较全面的认识,而且自己也确实思考过这方面的问题,才能有个较好的回答。关于iOS的部分,问了类的结构,runtime,runloop和线程安全的问题。
本人 22:05:46
http://www.jianshu.com/p/a5dd014edb13
本人 22:14:44
http://www.jianshu.com/p/9a5aac4c0d55
本人 22:20:58
http://mydown.yesky.com/news/87281483.html
本人 22:22:21
http://www.jianshu.com/p/9a5aac4c0d55
本人 22:22:30
http://mydown.yesky.com/news/87281483.html
本人 22:24:37
https://www.nowcoder.com/discuss/11597?type=0&order=3&pos=1000&page=1
本人 22:27:09
http://www.kanzhun.com/gsmsh619641.html
本人 22:27:37
http://www.kanzhun.com/msh/g711383-z102806/
本人 22:28:58
http://www.kanzhun.com/msh/g711383-z3634/
本人 22:32:20
http://blog.csdn.net/kamsau/article/details/39642535
本人 17:47:32
http://blog.csdn.net/qq_26768741/article/details/51357439
本人 18:46:54
category & extension
苹果推荐分类的使用
1.给已经存在的类添加方法
2.把类的实现分开在几个不同文件中
减少单个文件的体积
把不同功能组织到不同的category里
多个开发者共同完成一个类
按照需求加载想要的category
3.声明私有方法
除此之外,我们还可以转换思想,将category使用到如下地方:
4.模仿多继承
5.把framework的私有方法分开
category和extension区别1
category: 类别,分类
专门用来给类添加新的方法
不能给类添加成员属性,添加了成员变量,也无法取到
注意:其实可以通过runtime给分类添加属性
分类中用@property定义变量,只会生成变量的getter,setter方法的声明,不能生成方法实现和带下划线的成员变量。
extension:类扩展
可以说成是特殊的分类,也称作匿名分类
可以给类添加成员属性,但是是私有变量
可以给类添加方法,也是私有方法
category和extension区别2
虽然有人说extension是一个特殊的category,也有人将extension叫做匿名分类,但是其实两者差别很大。
extension
在编译器决议,是类的一部分,在编译器和头文件的@interface和实现文件里的@implement一起形成了一个完整的类。
伴随着类的产生而产生,也随着类的消失而消失。
extension一般用来隐藏类的私有消息,你必须有一个类的源码才能添加一个类的extension,所以对于系统一些类,如nsstring,就无法添加类扩展
category
是运行期决议的
类扩展可以添加实例变量,分类不能添加实例变量
原因:因为在运行期,对象的内存布局已经确定,如果添加实例变量会破坏类的内部布局,这对编译性语言是灾难性的。
category底层结构
我们知道,所有OC类和对象,在runtime层都是用struct表示的,category在runtime层使用结构体category_t定义的,包含了如下:
name 类名
cls 类
instanceMethods 对象方法
classMethods 类方法
protocols 协议列表
instanceProperties 添加的所有属性
category加载
在runtime,系统会将包含的内容添加如下:
把category的实力方法,协议,已经属性添加到类上
把类方法和协议添加到metaclass
分类加载和方法调用顺序
加载:先加载原类的+load方法,再加载分类的+load方法,若多个分类,则根据编译顺序加载
调用:先调用分类的方法,再调用原类的方法,分类方法会覆盖原类的方法
分类覆盖类的方法
如果分类中的方法与类的方法同名,则将会覆盖类的方法,实现原理:分类的对象方法会添加到类的方法列表中,分类的方法会添加到类的相应方法列表中(对象方法添加到类的方法列表,类方法会添加到metaclass列表),而且排列顺序会与原类的同名方法排在一起,且在原类的同名方法的前面。方法调用时会根据顺序先找到第一同名方法就调用,因此会覆盖原类的同名方法。
分类中添加成员属性
在runtime层面可以通过关联对象为分类添加成员属性
作者:erer22Colin
链接:http://www.jianshu.com/p/1ce81290c7a9
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本人 18:58:45
http://www.cocoachina.com/ios/20160712/17010.html
本人 18:59:42
http://www.cocoachina.com/ios/20160517/16290.html
本人 11:48:20
http://blog.csdn.net/fisherwan/article/details/19760681
本人 12:21:14
@implementation Singleton
static Singleton* _instance = nil;
+(instancetype) shareInstance
{
static dispatch_once_t onceToken ;
dispatch_once(&onceToken, ^{
_instance = [[super allocWithZone:NULL] init] ;
}) ;
return _instance ;
}
作者:疯狂的米老鼠
链接:http://www.jianshu.com/p/5e3761f28bb0
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本人 12:23:54
http://www.jianshu.com/p/e89cd880c1d8
本人 12:24:58
// 改进思路:设置标志位,明显如果有一趟没有发生交换(flag = flase),说明排序已经完成.
void BubbleSort2(int arr[], int num){
int k = num;
int j;
bool flag = true;
while (flag)
{
flag = false;
for (j = 1; j < k; j++)
{
if (arr[j - 1] > arr[j])
{
swap1(&arr[j - 1], &arr[j]);
flag = true;
}
}
k--;
}
}
//改进思路:记录一轮下来标记的最后位置,下次从头部遍历到这个位置就Okvoid BubbleSort3(int arr[], int num){
int k, j;
int flag = num;
while (flag > 0)
{
k = flag;
flag = 0;
for (j = 1; j < k; j++)
{
if (arr[j - 1] > arr[j])
{
swap1(&arr[j - 1], &arr[j]);
flag = j;
}
}
}
}
作者:WendySays
链接:http://www.jianshu.com/p/e89cd880c1d8
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本人 12:25:50
void swap(int *const p1, int *const p2){
int tmp = *p1;
*p1 = *p2;
*p2 = tmp;
}
//最后一个元素当做枢轴元素的简易版本
void qsort(int data[], int start, int end){
//不能少了参数合法性判断!!
if (data == NULL || start < 0 || end < 0)
{
return;
}
int pivot;
if (start < end)
{
pivot = partition(data, start, end);
qsort(data, start, pivot -1);
qsort(data,pivot+1,end);
}
}
作者:WendySays
链接:http://www.jianshu.com/p/e89cd880c1d8
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本人 12:26:05
快排序
本人 12:27:44
//最后一个元素当做枢轴元素的简易版本
int partition(int data[], int start, int end){
//不能少了参数合法性判断!!
if (data == NULL || start < 0 || end < 0)
{
throw new std::exception("invalid args!");
}
int i, j, pivot;
pivot = data[end]; //the last item as pivot
i = start;
j = end - 1;
for (;;)
{
//注意这个for循环前面的条件
for (; i < end -1 && data[i] <= pivot; i++);
for (; j >= 0 && data[j] >= pivot; j--);
if (i < j)
swap(&data[i], &data[j]);
else
break;
}
if(i < end -1)
swap(&data[i], &data[end]); //now i is the pivot index in the array
return i;
}
作者:WendySays
链接:http://www.jianshu.com/p/e89cd880c1d8
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本人 12:27:59
基于partiton的第k小元素的选择算法:
int k_qsort(int k, int data[], int start, int end)
{
//不能少了参数合法性判断!!
if (data == NULL || start < 0 || end < 0 || start > end)
{
throw new std::exception("invalid args!");
}
//k大于数组长度
if (k > end - start + 1)
{
throw new std::exception("no valid result!");
}
//partition实现见上
int pivot = partition(data, start, end);
if (k == pivot - start + 1)
return data[pivot];
else if (k < pivot - start + 1)//target before pivot
return k_qsort(k, data, start, pivot - 1);
else //target after pivot
return k_qsort((k - (pivot - start + 1)), data, pivot + 1, end);
}
作者:WendySays
链接:http://www.jianshu.com/p/e89cd880c1d8
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本人 10:18:36
http://www.cnblogs.com/lixiaohui-ambition/archive/2012/09/25/2703195.html
本人 10:18:44
链表
本人 10:48:17
http://blog.csdn.net/luckyxiaoqiang/article/details/7393134
本人 11:02:08
http://blog.csdn.net/luckyxiaoqiang/article/details/7518888
本人 11:02:49
http://blog.csdn.net/WalkingInTheWind/article/category/1387894/2
本人 11:54:33
http://blog.csdn.net/luckyxiaoqiang/article/details/7518888
本人 12:02:50
http://www.jianshu.com/p/b75f40380536
本人 12:07:22
http://www.jianshu.com/p/670318acae90
本人 12:09:17
http://www.jianshu.com/p/e89cd880c1d8
本人 12:35:39
void quiksort(int a[],int low,int high)
{
int i = low;
int j = high;
int temp = a[i];
if( low < high)
{
while(i < j)
{
while((a[j] >= temp)&& (i < j))
{
j--;
}
a[i] = a[j];
while((a[i] <= temp) && (i < j))
{
i++;
}
a[j]= a[i];
}
a[i] = temp;
quiksort(a,low,i-1);
quiksort(a,j+1,high);
}
else
{
return;
}
}
void main()
{
int arry[5] = {23,1,21,4,19};
quiksort(arry,0,4);
for(i=0;i<5;i++)
{
printf('%d ',arr[i]);
}
printf('\n');
}
\您有一次免费诊股,点击进入
本人 10:59:46
http://www.jianshu.com/p/fc4a37cc948f
本人 11:09:20
http://www.jianshu.com/p/dfe08b5c3085