当前位置:  编程技术>移动开发
本页文章导读:
    ▪想理解各大手机在日本的人气情况吗        想了解各大手机在日本的人气情况吗? 日本类似淘宝的网站价格(比较权威) 日本手机有三家公司 AU,SOFTBANK,DOKOMO 以下是这个连接: http://kakaku.com/ranking/itemview/keitai.htm   目前的排名如下.........
    ▪ Objective-C内存储器管理浅析        Objective-C内存管理浅析 注:本文原本打算在javaeye首发的,但是昨晚javaeye无法登陆,只能在其他论坛首发了。最近iphone平台比较火,大家都一窝蜂的上了。不过貌似好多都是从Java转过来的.........
    ▪ 文本框只显示上边框,文本域标题顶端对齐       文本框只显示下边框,文本域标题顶端对齐 css: <style type="text/css"> <!-- input{ border-left:0px;border-top:0px;border-right:0px;border-bottom:1px solid #ff0000 } span{ vertical-align:top; } --> </style> div: &l.........

[1]想理解各大手机在日本的人气情况吗
    来源: 互联网  发布时间: 2014-02-18
想了解各大手机在日本的人气情况吗?

日本类似淘宝的网站价格(比较权威)

日本手机有三家公司 AU,SOFTBANK,DOKOMO

以下是这个连接:

http://kakaku.com/ranking/itemview/keitai.htm

 

目前的排名如下:



    
[2] Objective-C内存储器管理浅析
    来源: 互联网  发布时间: 2014-02-18
Objective-C内存管理浅析
注:本文原本打算在javaeye首发的,但是昨晚javaeye无法登陆,只能在其他论坛首发了。

最近iphone平台比较火,大家都一窝蜂的上了。不过貌似好多都是从Java转过来的程序员,用惯了Java,对Objective- C可能会不大适应,特别是Objective-C的内存管理机制。手机平台不同于计算机,虽然开发的都是小巧的应用,但是由于手机硬件上的局限性,如果不对内存好好管理的话,还是会出很多问题的,特别是习惯了垃圾回收机制的Java程序员,最容易忽视这个问题。希望下面这篇文章能对大家有所帮助。


  Objective-C使用了一种叫做持有计数(Retain Count)的机制来管理内存中的对象。
  在 Objective-C中每个对象都对应着他们自己的持有计数(Retain Count),持有计数可以理解为一个整数计数器,当使用alloc方法创建对象的时候,持有计数会自动设置为1。当你向一个对象发送retain消息时,持有计数数值会增加。相反,当你像一个对象发送release消息时,持有计数数值会减小。当对象的持有计数变为0的时候,对象会释放自己所占用的内存。
  为什么要使用持有计数这个概念呢?
  想象一下,有时候你会在多个不同对象中引用同一个对象。当你在一个地方释放这个公用对象时,势必会对其他引用这个公用对象的对象产生影响。但是如果每当你引用这个公用对象时,都向持有计数发送一个retain消息,释放一个对象时,发送一个 release消息。这样对象的持有计数会记录到底有多少个对象引用了它自己。当它的持有计数变为0的时候,这意味着没有其他对象引用这个对象了,那么它可以安全的释放自己所占用的内存。
对上面情况的一个比较形象的比喻,假设我们有一条狗和几个用绳子牵着这条狗的人,那么不到最后一个人松掉手中的绳子,这只狗是不能获得自由的。而持有计数的作用就是记录了到底有多少个人牵着绳子。
不同于Java的垃圾回收,Objective-C提供了持有计数这种特别机制。它给予了开发者们更多的控制权,去控制什么时候和怎么样来释放一个对象,但是这同时需要开发者们更加的细心。如果你过早的释放了一个对象,那么你的应用程序很可能会意外宕掉。相反,如果你很长时间不释放对象占用的内存,那么应用程序在运行了一段时间后很可能会造成内存泄漏。
   数组(Array)是一个比较特别的例子,当你往数组里面添加一个对象时。数组里面存储的并不是这个对象的拷贝,而只是一个指向该对象的指针。数组在保存这个指针的同时会向指针所指的对象发送一个retain消息,相应的,对象的持有计数会增加。将对象从数组中移除的时候,同样会向对象发送release 消息,对象的持有计数会减小。当我们释放这个数组时,会向保存在这个数组中的所有对象发送release消息。看下面的两个例子:

1、没有释放内存的版本
array = [[NSMutableArray alloc] init];
for ( i = 0; i < 10; i++) {
   newNumber = [[NSNumber alloc]initWithInt:(i * 3)];
   [array addObject:newNumber];
}

上面的代码在创建newNumber对象时,向对象的发送了retain消息,对象的持有计数变为1。当向array中添加这个对象的引用时,又向对象发送了一次retain消息,这样对象的持有计数就变为2了,在使用完array时,我们会习惯性的释放掉array,但这样并不会释放array所持有的对象,而只是使所有对象的持有计数变为1,这些对象依然会占用着内存。

2、释放内存的版本
for (i = 0; i < 10; i++) {
   newNumber = [[NSNumber alloc]initWithInt:(i*3)];
   [array addObject:newNumber];
   [newNumber release];
}
1 楼 Xorcerer 2009-08-27  
请问,循环引用怎么办?
这个问题应该是老生常谈了吧?
2 楼 zhangqingxin 2009-09-01  
本篇文章只是给入门者讲解一下objective-c的内存管理机制,并不涉及更深的问题
3 楼 yymt 2009-09-02  
看javascript的时候看到这一方法,但是此方法有个弊端当A引用B,B引用C,C引用A,形成一个循环,A,B,C永不被释放,而且打破这个循环平衡,技术上比较难实现..
4 楼 dboylx 2009-09-04  
Xorcerer 写道
请问,循环引用怎么办?
这个问题应该是老生常谈了吧?


Objective-C是采用弱引用来解决这个问题~~
5 楼 Xorcerer 2009-09-09  
yymt 写道
看javascript的时候看到这一方法,但是此方法有个弊端当A引用B,B引用C,C引用A,形成一个循环,A,B,C永不被释放,而且打破这个循环平衡,技术上比较难实现..

弱引用,或者分代式垃圾回收(如果有GC的话)。

想不到Objective-C也有弱引用了。
6 楼 dboylx 2009-09-23  
Xorcerer 写道
yymt 写道
看javascript的时候看到这一方法,但是此方法有个弊端当A引用B,B引用C,C引用A,形成一个循环,A,B,C永不被释放,而且打破这个循环平衡,技术上比较难实现..

弱引用,或者分代式垃圾回收(如果有GC的话)。

想不到Objective-C也有弱引用了。


弱引用仅仅是给一个漂亮的名词,其实就是C语言里的一个指针~~~

不参加任何retainCount的计算
7 楼 lordhong 2009-09-24  
zhangqingxin 写道
注:本文原本打算在javaeye首发的,但是昨晚javaeye无法登陆,只能在其他论坛首发了。

现在可以去其他论坛删除了... 哈哈

写得不错, 内存管理我要好好学习一下...
8 楼 哇你长得真高 2009-09-24  
zhangqingxin 写道
数组里面存储的并不是这个对象的拷贝,而只是一个指向该对象的指针

加上 NSMutableArray *array;
看到星星一目了然是指针
9 楼 lich0079 2009-09-27  
这个好像是书上的吧 

    
[3] 文本框只显示上边框,文本域标题顶端对齐
    来源: 互联网  发布时间: 2014-02-18
文本框只显示下边框,文本域标题顶端对齐
css:
<style type="text/css">
<!--
input{
	border-left:0px;border-top:0px;border-right:0px;border-bottom:1px solid #ff0000
}
span{
	vertical-align:top;
}
-->
</style>


div:
<p>
	姓名:<input type="text" name="T1" size="20" value='只有下边框'>
</p>
<div>
	<span>简介:</span><textarea rows="4" name="S1" cols="20">这是一个textarea</textarea>
<div>



效果:



    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
php iis7站长之家
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3