A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 FengLinHuoShan 于 2015-11-17 23:09 编辑

有人问了,撸主,你丫在吹B吧!当时我就不乐意了,劳资20多年的清白不能说玷污就玷污!
你们见过这么委婉含蓄一本正经的吹B吗?
说有的站出来,保证不打死你!
有人问了,撸主,我还是不敢相信,你是零基础吗?
呵呵,撸主冷笑!可能吗?撸主是负基础,打死你信吗?
有人问了,撸主,可以和你生猴子吗?
撸主送你一句话:不是不可能,看脸!
废话不多说了,哥们要开撸了!!
等等。。。
又有人问了了了,撸主,你哪个班的?
这个问题有点严重!!说出来怕你们来打我,我才不会告诉你们是最近开的iOS双元班,哈哈哈~~~
一会上笔记!!

34 个回复

倒序浏览
新鲜出炉热乎乎的笔记来了!!!
OC加强-1
内存分为哪几个区域?(注意:面试题)
BSS段:用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称
数据段:用来存放程序中已初始化的全局变量的一块内存区域
代码段:用来存放程序执行代码的一块内存区域
以上三个区域是程序启动的时候加载的。
堆(heap):存放进程运行中被动态分配的内存段——>OC内存管理的范围:任何继承自NSObject的对象
栈(stack):存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)
tips:栈区的地址从高到低分配、堆区的地址从低到高分配。
回复 使用道具 举报
你起码说说是哪个地区的双元班吧
回复 使用道具 举报
5分钟教你搞定OC
回复 使用道具 举报
MrK 初级黑马 2015-11-18 00:04:28
报纸
l撸主 你是没基础就入学了?。
是不是要学5个月?。。。。。。。。。
回复 使用道具 举报
默默点赞!!!!!!!!!!!!!!!!!!!
回复 使用道具 举报
。。。。。。
回复 使用道具 举报
Marlong 中级黑马 2015-11-18 10:56:14
8#
先Mark一下,晚上再看,话说楼主快更
回复 使用道具 举报
某楼5分钟搞定oc!!!
回复 使用道具 举报
453702877 来自手机 中级黑马 2015-11-18 21:42:45
10#
都是这么猛的人吗???
回复 使用道具 举报
支持一个,赞
回复 使用道具 举报
狗把宿舍网咬断了,才接上!!!停更了两天撸主表示很抱歉!!(玩炉石的应该很讨厌这句话!!!)
这是这两天的笔记加原码!!
内存管理分类:
MRC、ARC、garbage collection

手动内存管理的原理:
1、对象的引用计数器:每个OC对象都有自己的引用计数器,是一个整数。表示对象被引用的次数,对象被创建时,默认计数器值为1,当计数器的值为0的时候,该对象销毁。
2、判断对象要不要回收的唯一依据计数器是否为0,不为0则存在。
3、对引用计数器的操作:
retain:使计数器+1,该方法返回对象本身
release:使计数器-1,并不代表释放对象
retainCount:获得对象当前的引用计数器值
回复 使用道具 举报
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        //用Person 类实例化一个实例对象
        Person *p = [Person new];  // 对象有没有所有者?  有
        //        [p dealloc];
        //证明有一个所有者
        NSUInteger count = [p retainCount];
        
        NSLog(@"count = %lu",count);  // 1
        
        //使用引用计数器+1
        //        Person *p2 = p;            //
        //Person *p2 = [p retain];
        [p retain];
        NSLog(@"p.retainCount = %lu",[p retainCount]);   //2
        
        //如果要回收对象?  应该想办法 retatinCount = 0
        [p release];
        NSLog(@"p.retainCount = %lu",[p retainCount]);   //1
        
        [p release];  //此处执行后,p的空间被回收             //0
        
        //证明p的空间被释放了,可以在在Person类中,重写dealloc方法
    }
    return 0;
}

重写dealloc方法如下:
- (void)dealloc
{
    //1 先释放子类自己的对象的空间
    NSLog(@"Person已经挂了");
    //2 父类dealloc一定要加上啊啊
    [super dealloc];
}
回复 使用道具 举报
看明白了上面这些手动内存管理算入门了,就是这么简单,学会了吗??
回复 使用道具 举报
超人不会飞啊 发表于 2015-11-17 23:28
你起码说说是哪个地区的双元班吧

哥们我在帝都,你在哪啊兄弟?
回复 使用道具 举报

卧槽,教教我呗
回复 使用道具 举报
MrK 发表于 2015-11-18 00:04
l撸主 你是没基础就入学了?。
是不是要学5个月?。。。。。。。。。

我自己撸视频赶进度,一切为了工作准备
回复 使用道具 举报
手动内存管理的原则:
1、如果对象有人使用,就不应该回收 如果你想使用这个对象,应该让这个对象 retain一次 如果你不想使用这个对象了,应该让这个对象 relase一次
2、谁创建 谁release
3、 谁 retain 谁 release

内存管理研究的内容:
野指针:  1)定义的指针变量没有初始化     2)指向的空间已经被释放了
内存泄露:  { Person *p  = [Person new];  }   p 栈区 [Person new];  堆区  如果栈区的p已经释放了,而堆区的空间还没有释放,堆区的空间就被泄露了
回复 使用道具 举报
野指针再现,僵尸对象应用!!!这尼玛感觉生化危机啊 操操操
#import <Foundation/Foundation.h>
#import "Dog.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        //创建一个对象
        //对象创建完成以后,默认的所有者有一个,是自己,所以引用计数为1
        Dog *byd = [Dog new];  //1
        [byd eat];  //
        NSLog(@"byd.retainCount = %lu",byd.retainCount);
        //如果一个对象已经被释放了,这个对象就称之为僵尸对象
        //
        [byd release];         //0
        //        NSLog(@"byd.retainCount = %lu",byd.retainCount);  //值已经没有意义了
        //这句话默认情况下不报错,
        //如果要让他报错,要开启僵尸对象检测
        //byd指针也就是野指针
        //        [byd eat];   //野指针访问
        
        //        [byd retain];  //byd 已经是僵尸对象了,不能复生
        
    }
    return 0;
}
回复 使用道具 举报
Marlong 发表于 2015-11-18 10:56
先Mark一下,晚上再看,话说楼主快更

兄弟,有你这句话,哥们很是欣慰啊
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马