课程咨询 :18487146383     QQ:570023382

长沙ios培训 > 达内新闻 > iOS开发初学者分享
  • iOS开发初学者分享

    发布:达内科技      来源:长沙达内      时间:2015-11-02

  • 学习就是一个不断分享的过程,面对别人的分享你是选择错过还是继续听听呢?如果你是你来作为一个分享者,那你会和我们分享些什么内容呢?

    长沙达内ios培训分享基础篇!

    为什么对一个变量release后还要设为nil

    对一个变量release后,这个变量指向的内存释放了,但这个变量本身没变,仍指向原来的内存地址。

    若这个变量在释放后被访问,或者被重复release,就会导致应用崩溃。

    设为nil后这个变量指向0×00,可以保证程序以后访问不到原先的内存地址,对nil进行release也没任何问题。

    使用类成员时,前面加不加self.有什么区别?

    长沙达内ios培训

    不加self.调用的是成员本身,加self.后实际上调用了其成员的get set方法。

    例:

    //.h

    @property (nonatomic, retain) NSString *name

    //.m

    name = @"bang" //没有retain,随时会被释放

    NSString *str = self.name //等于NSString *str = [self ame];

    self.name = @"bang" //等于[self setName:@"bang"]; 这时在set方法里retain了这个字符串

    长沙达内ios培训分享技巧篇

    内存泄漏

    可以通过xcode的编译工具Product-Analyze检查函数块范围内可能的泄漏点(外带会提示一些可能有的错误)。

    用leaks工具监测出来的泄漏查找方法是跟踪其代码提示中出现的变量,经常这个变量是在提示的调用堆栈以外的地方泄漏的。若实在查不到,最终办法是重写这个变量的retain和release方法,debug,从调用堆栈看是谁retain了它而没有release。

    要注意的是,用CFXXCreate(例如CFArrayCreate)生成的变量要用CFRelease释放。

    长沙达内ios培训分享数据存储

    如无搜索需要,可以将一个数据对象直接序列化后存到sqlite,取出时直接反序列化为对象使用。序列化需要数据类实现NSCoding协议,实现encodeWithCoder和initWithCoder两个方法就行,若有多个数据对象,可以写个基类实现这两个方法,并在这里面利用反射枚举自身所有变量去encode和decode,一劳永逸,具体实现网上找找就有了。

    长沙达内ios培训分享组件篇

    UINavigationController头尾显示隐藏

    在用NavigationController去管理view的push和pop时,需要根据不同的view设置是否显示NavigationBar和ToolBar,一开始在错误的地方设置了,导致有时该显示NavigationBar和ToolBar时不显示的情况,后来发现在viewWillAppear上设置万无一失。别笑我土鳖,没好好去理解它整个流程,一直没发现。

    - (void) viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];

    [self.navigationController setToolbarHidden:NO];

    [self.navigationController setNavigationBarHidden:NO];

    }

    长沙达内ios培训分享UITableView游标式渲染

    tableView的机制大概是:先定好总行数,某一行滚入视图范围时,回调一个函数去取view出来显示。这一行滚出视图再滚入时仍会继续回调这一函数取view。有这样的机制就是说无论你table里的数据有多少,都可以全部放入table中不用分页,因为不用一次性把所有数据都取出来,只在需要显示的时候根据游标去取对应的数据就行了。

    长沙达内ios培训分享UIWebView渲染范围

    UIWebView不是根据可视范围决定每次的渲染范围,而是根据自身控件的frame大小决定。

    曾尝试webview嵌在tableview里,为了让webview跟tableview一起滚动,把webview的大小设为webview里的内容大小,让webview不出滚动条,从而能跟着tableview的滚动条一起滚。这样做的后果是每次webview都一次性渲染整 个页面,内存占用多性能很差,而且在放大缩小这个webview时,渲染放大的整个页面更吃力,出现不能忍受的性能。解决办法是让webview定住高度为一整屏iphone的高度,限制了webview每次的渲染范围为可视范围,性能大好。带来的问题是无法随tableview滚动,但可以以其他方式优化体验。最近看到新版的ZAKER也是这样做的。

    长沙ios app开发培训班很多学员每天都会有很多问题向我们的老师提问,那面对这些问题,我们会为各位学员认真解答,希望能为您们及时解答心中的疑惑。

    推荐文章

上一篇:在iOS开发最好的时间遇见长沙ios培训

下一篇:开发:iOS比Android更容易赚钱

最新开班日期  |  更多

3G-IOS软件工程师就业班

3G-IOS软件工程师就业班

开班日期:11/30

3G-IOS软件工程师就业班

3G-IOS软件工程师就业班

开班日期:11/30

3G-IOS软件工程师全日制班

3G-IOS软件工程师全日制班

开班日期:11/30

3G-IOS软件工程师周末班

3G-IOS软件工程师周末班

开班日期:11/30

  • 网址:http:/cs.ios.tedu.cn     地址:长沙市芙蓉中路一段479号建鸿达现代城27楼
  • 课程培训电话:18487146383     QQ:570023382     全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56