篇一 :iOS开发技巧

iOS开发技巧

原文作者是开发界中知晓度相当高的 Mugunth Kumar,他是 MKNetworkKit 的作者(虽然没有 AFNetworking 使用那么广泛,但也是一个很棒的 Network Kit),更是最近流传甚广的《iOS 5/6 Programming - Pushing The Limits》的作者。

文章中 MK 介绍了几点开发中常用的小技巧,几条 Tips 简单易懂,但是很实用,不但可以提高开发效率,而且可以提高代码的可读性和可复用性。

Types in Objective-C 和 Naming Conventions 两个章节介绍性内容较多,下面从 Subclassing 开始简单直译一下,第一次翻译,有诸多不到位的地方,各位多包涵。

Subclassing 继承/子类

大多语言允许开发者子类化框架所提供的类,但是在 Objective-C 中不完全是这样。大部分常用的类,诸如 NSArray、NSSet、NSDictionary 基本上都是集合类型的。不建议继承这些类,除非你准备转发调用或者实现所有必要的原始方法。

在传统的开发语言中,通常会通过继承基础类型(类似 NSArray 的类)来新增方法,重载已有的方法,或是自定义 UI 组件的外观。在 Objective-C 中,一般通过 Category 来扩展新方法。通过混合方法(swizzling the method?)来重载 SDK 提供的实现。以及外观相关的代理协议(Protocol)来定制 UI 组件的外观。

虽说如此,还是有一些类是经常会继承它们的,比如 UIViewController、

UITableViewController、UIControl 等。继承 UIViewController 大概是开发过程中最棒的一件事,因为它使得添加常见的功能变得异常简单。在我开发的每个 App 中,会有一个继承自 UIViewController 的子类,它实现了一组常用的方法。所有其他的 View Controllers 则都继承自这个基础类。

…… …… 余下全文

篇二 :iOS开发 关于SEL的简单总结

iOS开发 关于SEL的简单总结

1.  @interface Person : NSObject 

2.   

3.  + (void)test1; 

4.  - (void)test2; 

5.  @end 

6.   

7.      // 根据.h文件中定义的Person类和方法 执行完这行代码 在内存中如下 

8.      Person *person = [[Person alloc] init]; 

SEL就是对方法的一种包装。包装的SEL类型数据它对应相应的方法地址,找到方法地址就可以调用方法

1.方法的存储位置

·         在内存中每个类的方法都存储在类对象中

·         每个方法都有一个与之对应的SEL类型的数据

·         根据一个SEL数据就可以找到对应的方法地址,进而调用方法

·         SEL类型的定义:  typedef struct objc_selector *SEL

…… …… 余下全文

篇三 :关于零基础学习iOS开发的学习方法总结

关于零基础学习iOS开发的学习方法总结

关于零基础学习iOS开发的学习方法总结

本文章由蓝鸥科技肖浩老师整理提供,蓝鸥iOS培训将陆续发布技术文章,如有需要可以添加关注,希望对您的学习有所帮助。

关于零基础学习iOS开发的学习方法总结

最近很多零基础来参加蓝鸥培训的学生经常会问到一些学习方法的问题,就如下我自己见过的好的学习方法一起讨论一下.

蓝鸥iOS开发技术的学习路线图

程序员的主要工作是什么

在培训期间,老师与学生的时间应该如何分配

蓝鸥培训的主要内容是什么

iOS开发技术

Unity3D开发技术

Android开发技术

HTML5开发技术

关于零基础学习iOS开发的学习方法总结

iOS开发技术的学习路线图

[x] C语言技术基础

蓝鸥科技有限公司 版权所有

关于零基础学习iOS开发的学习方法总结

[x] OC开发基础

[x] UI界面开发基础

[x] 项目数据逻辑

[x] iOS高级程序开发

[x] 项目优化技术

[x] 团队配合技术

程序员的主要工作是什么

阅读代码

阅读公司中已经处于迭代过程中的代码(理解公司前辈开发过程中的开发思路);

阅读Github上的优秀的代码框架(比较Forks与Stars的数量)(学习其他优秀程序员编写代码功能时的思路);

阅读代码的目的,是我们要做到对项目代码的执行流程和细节做到胸有成竹;

在阅读代码的过程中,需要注意的流程:

1.首先复制一份原始代码到当前路径,并且保存为文件名加日期;

例如:LODoudizhu2015-03-22

2.然后找到AppDelegate.m文件,并且从程序的启动流程中,阅读相关的功能代码;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

//...

//程序启动流程

…… …… 余下全文

篇四 :iOS开发程序猿必备技巧

iOS开发程序猿必备技巧

随着移动智能手机的火爆,作为移动智能手机操作系统的ios也越来越发火爆,本文主要是一个潜伏在码农界N久的iOS程序猿总结、收刮的一些ios开发精华技巧,需要的ios码农请收藏,对于这些技巧不喜勿喷。

1.计算图片位置的函数:AVMakeRectWithAspectRatioInsideRect()

通过这个函数,可以计算一个图片放在另一个 view 按照一定的比例居中显示,它可以直接一个 image 以任何的比例显示在 imageview 中居中所处的位置,拿 UIViewContontAspectFit来演示:

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 300, 300)];

imageView.center = self.view.center;

imageView.backgroundColor = [UIColor redColor];

imageView.contentMode = UIViewContentModeScaleAspectFit;

UIImage *image = [UIImage imageNamed:@"mm.jpg"];

imageView.image = image;

CGRect iamgeAspectRect = AVMakeRectWithAspectRatioInsideRect(image.size, imageView.bounds);

NSLog(@"iamgeAspectRect = %@, imageView =%@",NSStringFromCGRect(iamgeAspectRect),NSStringFromCGRect(imageView.frame));

…… …… 余下全文

篇五 :不可不知的:iOS开发的22个诡异技巧

网址:edu.51CTO.com 不可不知的:iOS

不可不知的iOS开发的22个诡异技巧

开发的22个诡异技巧

结合自身的实践开发经验总结出了22个iOS开发的小技巧,以非常欢乐的语调轻松解决开发过程中所遇到的各种苦逼难题,光读着便已忍俊不禁。

1. TableView不显示没内容的Cell怎么办?

类似于图1,我不想让下面的那些空显示。很简单,添加

“self.tableView.tableFooterView = [[UIViewalloc] init];”试过都说好,加完这句之后就变成了图2的样子。

2. 自定义了leftBarbuttonItem左滑返回手势失效了怎么办?

1. self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]

2. initWithImage:img

3. style:UIBarButtonItemStylePlain

4. target:self

5. action:@selector(onBack:)];

6. self.navigationController.interactivePopGestureRecognizer.delegate =

(id<UIGestureRecognizerDelegate>)self;

3. ScrollView莫名其妙不能在viewController划到顶怎么办?

1. self.automaticallyAdjustsScrollViewInsets = NO;

4. 键盘事件写得好烦躁,都想摔键盘了怎么办?

买个结实的键盘; 网址:edu.51CTO.com

使用IQKeyboardManager(GitHub上可搜索),用完之后腰也不疼了,腿也不酸了。

5. 为什么我的App老是不流畅,到底哪里出了问题?

…… …… 余下全文

篇六 :分享一些学习ios开发的心得

苹果系统凭借其流畅的系统和良好的用户体验赢得了一致好评,由于对ios系统有浓厚的兴趣,所以最近一直对苹果ios系统有关注度。今年以来一直在学习有关ios方面的知识,最近利用空余时间分享一些我在扣丁学堂在线学习的一些有关学习ios的方法,希望能够帮助大家研究iphone和ipad。做程序的都知道,iphone和ipad都是用Objective-C语言来开发的,所以一般情况在学习ios之前,最好有一定的Objective-C基础。学习之前了解和学习一些关于Objective-C的语法基础和规则对往后帮助是非常大的。如果之前有一定的C和C++还有Java的基础,学习起来会更加容易上手,因为各种语言具有一定的联系性。但不管是学习Objective-C语言,还是学习ios,很多朋友都是只看书本上的例子,没有进行实际的操作,这对往后真刀真枪做项目的时候会有很大的压力。在苹果机上,在Xcode和Interface Builder开发环境中,按部就班的“抄”些应用程序。而很少去思考,没有去多问几个为什么。这是学习的大忌,所以一定要经常总结自己的学习方法,发现错误要及时作出调整。孔子说,学而不思则罔,思而不学则殆。几千年之前孔子这句话对现在的我们来说作用还是很大的,告诉我们学和思是要结合的,这样才能进步。每天晚上回去要多问几个为什么?问问自己学到了多少?照着书上的例子,一个一个做下来,只要不是文盲,做到举一反三,这样才有更好的效果。所以通过我个人的案例我提醒大家,以后的学习中,一定要多问自己几个为什么,多向有经验的人请教,不要碍于面子。除此之外还有一点就是坚持,坚持是非常重要的,我看重苹果未来的发展,所以我一定要坚持下去,也许别人很容易就学会了的东西,我要学很久,但没关系,因为我始终相信“勤能补拙”这句话!以后一定要多请教有经验的朋友、多看点书,在这里也要感谢一下那些帮助过我的老师,他们对我学习中极大的帮助,每次有不懂得问题,都及时得到了他们的回答。也从中学到了很多。

…… …… 余下全文

篇七 :iOS开发初学者详细总结

曾尝试webview嵌在tableview里,为了让webview跟tableview一起滚动,把webview的大小设为webview里的内容大小,让webview不出滚动条,从而能跟着tableview的滚动条一起滚。这样做的后果是每次webview都一次性渲染整个页面

基础篇

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

对一个变量release后,这个变量指向的内存释放了,但这个变量本身没变,仍指向原来的内存地址。若这个变量在释放后被访问,或者被重复release,就会导致应用崩溃。设为nil后这个变量指向0×00,可以保证程序以后访问不到原先的内存地址,对nil进行release也没任何问题。

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

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

例:

//.h

@property (nonatomic, retain) NSString *name

//.m

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

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

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

技巧篇

内存泄漏

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

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

…… …… 余下全文

篇八 :ios移动开发内存优化总结

阿弥陀佛,善哉善哉! 这几天在公司闲来无事说点本人ios开发中总结的一些经验,本人老菜鸟一只,若有错误,还请路过大侠指点!ios开发最麻烦的一点应该就是内存吧,当然如果你不用starling开发的话,性能也是一个比较大的麻烦,因为渲染所带来的性能消耗是相当大的。由于本人是用starling开发,所以性能这块也没有什么可以多说的,就先说说内存吧。

如果你的应用在手机上总是一卡一卡的,那么恭喜你 ~~~ 内存紧张了。 我以前做过一个flash原生的游戏,游戏开始跑的挺顺畅的,但是玩久了就会一卡一卡的,而且越往后间隔时间越短,到最后卡得动不了了,直到闪退,当时就有人说是不是又很多enterFrame呀,导致计算量变大呀。我当时只是笑笑的看着他不说话,心里无限bs,没见识。后来查出是有一个矢量图的sprite,在不停的创建,但是没有得到释放,所以每次加一点点内存,开始不明显还挺流畅,到后面就hold不住了,整个就是不停的执行内存回收。 效率低的表现方式一般是帧频降低,游戏很慢,但是帧数稳定,不会卡顿。而卡顿一般就是以下几个原因:1,内存紧张,程序不停的执行内存回收,内存紧张了垃圾回收的执行周期就会缩短,垃圾回收可以在内存不紧张的时候执行不会卡,只会掉帧,但是如果内存很紧张的时候就会卡顿;2.后台下载东西,联网,比如广告,登录gameCenter(小小的吐槽下,本人所在公司最喜欢加广告了,蛋疼)等;3.电量低了(这个可能大家都知道,呵呵)。

苹果手机内存一般都不大吧,不比安卓,所以内存还是要相当的节省。内存最主要的消耗就是在纹理上了,所以纹理一定要尽量省着点用,每一张纹理图集都要尽量摆满,不要有太多的空白区域,有一些纹理能重用的就尽量重用,比如按钮,可以你的按钮背景都是一样的,不同的就是按钮上面的图标或者文字(如play,menu等),这时你最好的做法是把这个按钮拆开,按钮的背景独立出来,所有按钮都用这个一个,然后再在上面加文字。文字如果比较多的话推荐使用位图字体,因为即使是使用starling,starling自带的TextField的渲染效率也不是很令人满意。位图字体这里不多少。

…… …… 余下全文