IOS初学,关于内存的使用和释放,以及对其方法的理解

拿String字符串来说

查了下为什么前面进行NSString alloc定义以后需要release

函数alloc是可返回一个指向n个连续字符存储单元的指针,alloc函数的调用者可以利用该指针存储字符序列

简单来说就是程序已经将其实例化,并且分配了一块内存,如果不进行回收的话,则申请的内存还在,但是却不在使用,一直占据这内存资源


1.无需手动释放的字符串创建方法

NSString * str =@"itcast";

使用完后无需去手动进行release,创建完成即可使用

2.创建完成需要先使用然后释放

NSString *str2=[[NSString alloc] initWithString:@"12345678“]

//如果需要进行使用的话则需在release之前进行使用,简单来说

//系统进行log打印

NSLog(@"str2=%@",str2);

[str2 release];

//系统自带的对象方法都有一个相对应的类方法来完成相同的功能

//用的情况很少,一般使用第一种,弱弱的吐槽一句,oc连个垃圾回收机制都没有,不过这对程序员要求的比较高点吧,但是IOS对方法什么的封装的很好

3.定义一个动态的string

NSString *str3 =[[NSSting alloc] initWithFormat:@"my age is %d",25];

NSLog(@"str3=%@",str3);

[str3 release];

NSString *str4=[NSString stringWithFormat:@"age is %d",20];

4.将c语言转化为oc

initWIthUTF8String

//发现这个oc封装的方法名称很好哎,基本看名称就知道该方法是做什么用的了,但是定义和使用稍微要注意内存的释放

通过以上四个方法的使用,个人感觉其实这些可以举一反三,首先可以联想一下Android或者java

先定义再使用,但是IOS还要根据不同的定义方法来决定是否决定释放内存

感觉如果不进行[[NSString alloc]]是不用进行内存释放的,前提是你定义的这个元素后期不会循环调用,周期很短

再有就是初始化,相信有过良好的编码习惯的java或者Android程序员一般都会在初始化的生命周期定义两个方法initVIew();initData;(根据安卓的习惯 java的话应该init就行了),同样,IOS也是一样的,甚至来说更简单,IOS不开源,它自身有很好的API接口,可以让程序员进行调用。

同样的,程序员可以根据自己的定义的类型使用相应的初始化的api接口函数,一般你可以根据名字就能够猜出使用的方法,因为博主初学,没那么长时间学习基础,基本就是看一下用法想一下其他的用法怎么使用,如有不足还请读者补充,谢谢

举个例子:

IOS进行文件的读取,一般都是先去获取路径,然后将其读取到内存

万变不离其宗,同样IOS其实也是这样的,先定义path,简单说一下,IOS可以直接定义路径,不和Android一样还要调用方法或者判断是那个内存

NSString *path=@“/Users/apple/Desktop/fanyafeng.txt”;

NSString *str=[[NSString alloc] initWithContentsOfFile:path encoding NSUTF8StringEncoding error:nil];

简单说下三个参数的作用,第一个是获取路径,第二个是编码格式(这里是可以进行汉字的读取的),第三个个人理解是判断是否读取成功,但却不是boolean类型的,IOS中nil是空的意思

error中携带着信息,成功为nil,失败的话会返回相应的信息(\n是换行,好长没用过c了,都忘的差不多了,记得是大一的时候学的c和c++)

IOS中的ns和@用的好频繁,相当频繁。。。不过IOS方法的命名真的很人性化,比java简单多啦

说一下移动端最重要的,就是发送相应的地址请求获取相应的数据

//url的格式:协议头://全路径

//网络协议头http;本地文件协议头:file;ftp服务器协议:ftp

//URL:代表一种资源,每一个资源都有自己唯一的URL地址

NSURL *url=[NSURL URLWithString:@"http://www.baidu.com"];

NSString *str=[[NSString alloc] initWithContentsOfURL:url ecoding:NSUTF8StringEncoding error:nil];

//大家可以测试抓一下包,我写Android一般都是用httpclient

//千万别忘了进行内存的释放

[str release];

现在貌似一般都是用的json吧,或者直接返回一个int数字,例如登录的时候,-1,0,1未知错误,失败,成功

然后根据此进行判断,基本上博主都能理解了,可以进行下一步的学习了,希望不要把Android和IOS弄混了




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值