ios修炼之旅
文章平均质量分 70
预言之子IX
这个作者很懒,什么都没留下…
展开
-
iOS 面试题--转自唐巧
iOS 面试题(一)寻找最近公共 View题目:找出两个 UIView 的最近的公共 View,如果不存在,则输出 nil 。分析:这其实是数据结构里面的找最近公共祖先的问题。一个UIViewController中的所有view之间的关系其实可以看成一颗树,UIViewController的view变量是这颗树的根节点,其它的view都是根节点的直接或间接子节点。转载 2017-02-26 20:19:43 · 9500 阅读 · 0 评论 -
提高ios app性能 初中高级实践
这篇文章来自iOS Tutorial Team 成员 Marcelo Fabri, 他是 Movile 的一个iOS开发者. Check out his personal website or follow him on Twitter.原文地址 当我们开发iOS应用时,好的性能对我们的App来说是很重要的。你的用户也希望如此,但是如果你的app表现的反应迟钝或者很慢也转载 2014-04-17 11:30:47 · 758 阅读 · 0 评论 -
iOS 优秀第三方开源库备忘-汇总
下面是一些比较流行的第三方库: HTTP相比较之下,AFNetworking是目前最优秀的一个了:轻量、易用、使用者多、开发者有在积极维护。在AFN出现之前,这个角色是由ASIHTTPRequest扮演的,只是到现在年久失修了。关于AFN和ASI的对比,这里有一篇不错的文章http://www.infoq.com/cn/articles/afn_vs_asi。除此之外,MK原创 2014-01-24 15:50:44 · 539 阅读 · 0 评论 -
asihttprequest old了,用afnetworking把!
http://www.raywenderlich.com/zh-hans/36079/afnetworking速成教程(1)转载 2014-01-08 22:54:18 · 428 阅读 · 0 评论 -
IOS 静态链接库
一、概述在 Xcode 提供的构建设置中,有一项称为“MACH_O_TYPE ”,其作用是定义输出的产品文件格式以及产品文件用于其他产品构建时如何被链接。它的取值如下所示:1、可执行文件(mh_execute)(.app)2、动态链接库(mh_dylib)(.dylib)3、包(mh_bundle)(.bundle)4、静态链接库(staticlib)(.a转载 2013-12-17 17:43:47 · 739 阅读 · 0 评论 -
IOS面经系列(四)常见的问题
45. 实例化一个UITableView对象,要求写出关键语句(10分)。答:UITableView *my = [[UITableView alloc]initWithFrame: style:];my.delegate = self;my.dataSource = self;首先需要分配空间设置表格类型然后需要设置两个必须的委托对象。46.转载 2013-12-16 22:24:24 · 788 阅读 · 0 评论 -
IOS面经系列(一)浅析OC之内存管理
要谈oc的内存管理,首先得从对象的生命周期说起。1.对象的生命周期1.1引用计数oc利用引用计数来计算对象的使用寿命。每个对象都有一个与之相联的整数,称作它的引用计数器/保留计数器。当某段代码需要访问一个对象时,该代码将该对象的保留计数器的值加1,表示为“我要访问该对象”。当这段代码结束对象访问时,将对象的保留计数器值减1,表示它不再访问该对象。当保留计数器值为0,表示不再原创 2013-12-16 16:13:11 · 709 阅读 · 0 评论 -
IOS面经系列(三)常用的framework第三方库ASIHTTPRequest简介
ASIHTTPRequest是很好用的ios HTTP开源项目。实现功能如:异步请求,队列请求,GZIP压缩,缓存,断点续传,进度跟踪,上传文件,HTTP认证在新的版本中,还加入了Objective-C闭包Block的支持,让我们的代码更加轻简灵活。下面就举例说明它的API用法。一,发起一个同步请求同步意为着线程阻塞,在主线程中使用此转载 2013-12-13 14:36:35 · 704 阅读 · 0 评论 -
IOS面经系列(二)什么是id ,为什么要用id,在哪用id
谁能告诉我以下这三种声明的区别? 1. id b1; 2. NSObject *b2; 3. id b3;第一种,id类型是运行时的动态类型,仅声明了指向对象的指针,没给编译器任何类型信息,因此,编译器不会做类型检查。由于编译器无法知道它的真实类型,即使你发送一个id类型没有的方法,也不会产生编译警告。因此你可以发送任何信息给id类型的对象(但很危险)。原创 2013-12-16 21:22:17 · 965 阅读 · 0 评论 -
iOS的主要框架介绍
http://blog.csdn.net/yuhuangc/article/details/7575519转载 2014-04-16 11:15:08 · 353 阅读 · 0 评论 -
touch
http://blog.csdn.net/chun799/article/details/8194893转载 2014-01-03 00:16:40 · 384 阅读 · 0 评论 -
IOS面经系列(五)多线程开发
一、概述线程(thread):用于指代独立执行的代码段。进程(process):用于指代一个正在运行的可执行程序,它可以包含多个线程。任务(task):用于指代抽象的概念,表示需要执行工作。多线程的替代方法:Operation objects(操作对象):操作对象可能创建线程更快,因为它们使用内核里面常驻线程池里面的线程来节省创建的时间,而不是每转载 2017-02-13 11:17:40 · 525 阅读 · 0 评论 -
iOS10下视频播放黑屏,又是苹果的坑!
最近业余在捣弄视频处理的相关技术。当使用到 AVVideoCompositionCoreAnimationTool去合成视频时,用AVAssetExportSession导出的视频文件,用AVPlayer播放时有一定几率出现黑屏。通宵2个晚上去做AB Test,基本可排除是自身代码问题,原因应该是iOS下AVAssetExportSession在跟其他AV开头的方法共同使用时,会产生不稳定原创 2016-10-18 16:02:11 · 21070 阅读 · 3 评论 -
iOS10 XCode8 证书问题Signing解决方法
中秋节项目要发布,临时在家里电脑打包,发现证书一直识别失败。仔细看了Xcode的配置。尼玛Build Setting里原有的证书设置 居然Deprecated了。然后工程一直打包失败,Target - General 里各种红色感叹号,识别不出匹配的证书。折腾了半天发现用下面的方法,10秒钟完美解决:Target - General - 勾选 X原创 2016-09-18 11:02:36 · 27436 阅读 · 2 评论 -
iOS 后台任务(终于有讲得不错的了)q
iOS7 之前的后台任务流程如下:可以看到,应用其实有十分钟后台的权利。除此之外还有两种所谓的伪后台,一种是系统推送机制,另一种是墓碑式后台(在关闭程序时保存现场,下次启动时还原,给人一种后台的假象)ios7之后(一个app可以混合调用多种模式): Background Au原创 2015-08-27 15:56:06 · 962 阅读 · 0 评论 -
音频队列服务(Audio Queue Services)
介绍 本文档介绍了如何使用音频队列服务(Audio Queue Services),这是Core Audio Toolbox框架中的一个C语言编程接口。什么是音频队列服务(Audio Queue Services) 在iOS和Mac OS X中,音频队列服务提供了一种直接、低开销的的方式来录制和播放音频。这也是向你的iOS和Mac OS X程序中添加转载 2014-07-30 14:49:23 · 1402 阅读 · 0 评论 -
loadView
一、loadView1.什么时候被调用?每次访问UIViewController的view(比如controller.view、self.view)而且view为nil,loadView方法就会被调用。2.有什么作用?loadView方法是用来负责创建UIViewController的view3.默认实现是怎样的?默认实现即[super loadVi转载 2014-06-11 15:22:25 · 429 阅读 · 0 评论 -
UIViewController生命周期
UIViewController转载 2014-06-11 15:04:59 · 472 阅读 · 0 评论 -
Objective-C 和 Core Foundation 对象相互转换的内存管理总结
iOS允许Objective-C 和 Core Foundation 对象之间可以轻松的转换,拿 NSString 和 CFStringRef 来说,直接转换豪无压力:CFStringRef aCFString = (CFStringRef)aNSString; NSString *aNSString = (NSString *)aCFString; 针对内转载 2014-06-11 17:09:05 · 457 阅读 · 0 评论 -
objective-c 范围 NSRange
范围的作用 NSRangetypedef struct _NSRange { unsigned int location; unsigned int length; } NSRange;这个结构体用来表示相关事物的范围,通常是字符串里的字符范围 或者 数组里的元素范围。location字段存放该范围的起始位置,而length则是范围内所含元素的个数。举个栗子:"原创 2013-12-13 21:36:47 · 681 阅读 · 0 评论 -
IOS优雅的Block语法
自IOS4.0起加入Block语法,UIKit中超过一百个API使用了Block,主要用在线性遍历(简化代码,更好的抽象),方法回调(相比使用delegate模块化程度更高),异步逻辑(GCD框架下)。在一些开源的项目里面也都提供支持Block语法的API,如ASIHttpRequest、Reachability等,更有专门扩展现有框架提供Block支持的Blockskit项目。很显然Bl转载 2013-12-12 18:04:55 · 547 阅读 · 0 评论 -
让ASIHTTPRequest不占用主线程
ASIHTTPRequest是iOS平台不错的http开源库,关于它的介绍随便google一下一堆。据说 使用ASIHTTPRequest,当同时请求数超过2时,就会跑到主线程去执行,从而影响用户UI操作。如下是ASIHttpRequest的代码所在地:- (void)requestFinished{#if DEBUG_REQUEST_STATUS || DEBUG原创 2013-12-12 15:34:27 · 676 阅读 · 0 评论 -
用法总结:NSNumber、NSString、NSDate、NSCalendarDate、NSData
NSNumber+ (NSNumber *)numberWithInt:(int)value;+ (NSNumber *)numberWithDouble:(double)value;- (int)intValue;- (double)doubleValue;NSNumber可以将基本数据类型包装起来,形成一个对象,这样就可以给其发送消息,装入NSArr转载 2013-05-02 14:17:13 · 476 阅读 · 0 评论 -
Kvo
Kvo是Cocoa的一个重要机制,他提供了观察某一属性变化的方法,极大的简化了代码。这种观察-被观察模型适用于这样的情况,比方说根据A(数 据类)的某个属性值变化,B(view类)中的某个属性做出相应变化。对于推崇MVC的cocoa而言,kvo应用的地方非常广泛。(这样的机制听起来类 似Notification,但是notification是需要一个发送notification的对象,一般是转载 2013-04-27 20:49:58 · 393 阅读 · 0 评论 -
ios开发笔记(持续补充)
cache操作。可以直接操作文件来读写缓存数据。 也可以操作数据库来读写缓存数据。一般而言数据库更优,如果是经常写入操作,例如经常需要一条删除,插入,则更加需要使用数据库。大小会比直接写文件开销大点如果只是一两次的覆盖,就直接写文件,肯定更快cocos2d:1,removeFromParen原创 2013-04-19 16:36:08 · 405 阅读 · 0 评论 -
cocos2d中CCSprite的使用总结
精灵是游戏中十分重要的组成部分,随处可见,如:游戏背景、NPC、人物、道具等。在cocos2d-x引擎中,只要是用图片展示的,基本上需要使用精灵类。1. 首先来了解一下跟精灵相关的几个类:(1) CCTexture2D可以把它看成一个纹理,它是cocos2d-x渲染图形的重要参数,用来贴图,因为cocos2d-x使用opengl es绘制2d图形的,它的尺寸是2的n次方。一般通过以下方转载 2013-04-25 18:05:54 · 724 阅读 · 0 评论 -
客户端程序开发-MVC框架
一、什么是MVC设计框架对于程序开发,尤其是客户端程序开发而言,MVC框架非常实用,C推荐通过观察者设计模式来实现。MVC的m即model(模型),v即view(视图),c即controller(控制器)。v是m在屏幕上的表现,c定义v对用户输入的响应方式。一旦m的数据发生变化,m将通知有关的v使之刷新。同一个m可创建不同的v而无需重写m(轻松切换ui)。一般情况下,view观察m原创 2013-04-25 17:34:55 · 838 阅读 · 0 评论 -
objective-c 使用@dynamic和@synthesize
@dynamic 意思是由开发人员提供相应的代码:对于只读属性需要提供 setter,对于读写属性需要提供 setter 和 getter。@synthesize 意思是,除非开发人员已经做了,否则由编译器生成相应的代码,以满足属性声明。@synchronized(...) 包围的块会自动加锁,保证一次只有一个线程使用。在处理并发时,这并不是最好的解决方案,但却是对大多数关键块转载 2013-04-10 17:11:30 · 500 阅读 · 0 评论 -
优化UITableView性能
使用不透明视图。不透明的视图可以极大地提高渲染的速度。因此如非必要,可以将table cell及其子视图的opaque属性设为YES(默认值)。其中的特例包括背景色,它的alpha值应该为1(例如不要使用clearColor);图像的alpha值也应该为1,或者在画图时设为不透明。不要重复创建不必要的table cell。前面说了,UITableView只需要一屏幕的UITab转载 2013-03-18 11:28:46 · 333 阅读 · 0 评论 -
获取UIView的UIViewController
@interface UIView-(UIViewController *) getViewController;@end @implementation UIView -(UIViewController*) getViewController{ for(UIView *next =[self superview];转载 2013-03-18 14:32:53 · 511 阅读 · 0 评论 -
从cocos2d-iphone 到cocos2d-x的转变心得
#ifndef _GAME_OVER_SCENE_H_#define _GAME_OVER_SCENE_H_#include "cocos2d.h"class GameOverLayer : public cocos2d::CCLayerColor{public:GameOverLayer():_label(NULL) {}; virtual ~GameOverLaye转载 2013-05-16 10:36:15 · 765 阅读 · 0 评论 -
didReceiveMemoryWarning:和viewDidUnload:
iOS系统在低内存时情况下会调用didReceiveMemoryWarning和viewDidUnload方法。iOS6之后就不再使用viewDidUnload,而仅支持didReceiveMemoryWarning。didReceiveMemoryWarning方法的主要职能是释放内存,包括视图控制器中的一些成员变量和视图的释放。现举例如下:- (void)didReceiveMemoryW转载 2013-05-17 15:46:39 · 795 阅读 · 0 评论 -
关于单例(Singleton)的示范代码:allocwithzone
static MyGizmoClass *sharedGizmoManager = nil;+ (MyGizmoClass*)sharedManager{ if (sharedGizmoManager == nil) { sharedGizmoManager = [[super allocWithZone:NULL] init]; } ret转载 2013-11-25 15:23:39 · 615 阅读 · 0 评论 -
ios滤镜Core Image
Core Image是一个很强大的框架。它可以让你简单地应用各种滤镜来处理图像,比如修改鲜艳程度, 色泽, 或者曝光。 它利用GPU(或者CPU,取决于客户)来非常快速、甚至实时地处理图像数据和视频的帧。多个Core Image滤镜可以叠加在一起,从而可以一次性地产生多重滤镜效果。这种多重滤镜的优点在于它可以生成一个改进的滤镜,从而一次性的处理图像达到目标效果,转载 2013-11-22 16:31:23 · 567 阅读 · 0 评论 -
UITableView简介
一、UITableView概述 UITableView继承自UIScrollView,可以表现为Plain和Grouped两种风格,分别如下图所示: 其中左边的是Plain风格的,右边的是Grouped风格,这个区别还是很明显的。 查看UITableView的帮助文档我们会注意到UITableView有两个Delegate分别为转载 2013-09-16 15:43:29 · 496 阅读 · 0 评论 -
iOS动画效果和实现
动画效果提供了状态或页面转换时流畅的用户体验,在iOS系统中,咱们不需要自己编写绘制动画的代码,Core Animation提供了丰富的api来实现你需要的动画效果。 UIKit只用UIView来展示动画UIKit只用UIView来展示动画,动画支持UIView下面的这些属性改变:frame bounds center transform转载 2013-09-30 15:25:51 · 543 阅读 · 0 评论 -
popover典型问题:Popover with embedded navigation controller doesn't respect size on back nav
QUESTION:I have a UIPopoverController with navigationController and bunch of subviews. The size of the popover is set just before it's shown like this:[self.myPopover setPopoverContentSize:CGSiz原创 2013-09-30 12:45:25 · 723 阅读 · 0 评论 -
简单的实现播放背景音乐(淡入淡出效果)
最近在开发幻灯片的需求,首先确认项目里已经加入AudioToolbox.framework。在此放上背景音乐播放的代码,添加淡入淡出效果,重温一下计时器的知识点。头文件 QZSoundBoard.h 内容如下#import #import @interface QZSoundBoard : NSObject+ (void)addSoundAtPath:(NSString *)原创 2013-08-22 20:01:15 · 4501 阅读 · 1 评论 -
Cocos2D-X屏幕适配新解
为了适应移动终端的各种分辨率大小,各种屏幕宽高比,在 Cocos2D-X(当前稳定版:2.0.4) 中,提供了相应的解决方案,以方便我们在设计游戏时,能够更好的适应不同的环境。 而在设计游戏之初,决定着我们屏幕适配的因素有哪些?简而言之只有两点:屏幕大小和宽高比。这两个因素是如何影响游戏的呢? •屏幕大小: 从小分辨率 480×320 到 1280×800转载 2013-05-14 16:09:58 · 752 阅读 · 0 评论 -
<NSCoding>存储数据 archivedDataWithRootObject unarchiveObjectWithData
当你于写数据需要本地存储时,即将你的数据写到硬盘上的时候,你就必须对他进行序列化,转换成二进制文件,从而便于在磁盘上的读写,同理在取出的时候必须将其在反序列化,这样才能将数据读出来,就好比加密和揭秘的过程。NSUserDefaults只支持: NSString, NSNumber, NSDate, NSArray, NSDictionary.如果把一个自定义的类存到一个NSArra转载 2013-05-06 15:42:42 · 4183 阅读 · 0 评论