
IOS开发
文章平均质量分 64
LIN1986LIN
坚持自己路,一直走下去
展开
-
2020年阿里、字节:一套高效的iOS面试题
runtime相关(参考源码objc-runtime或objc4)结构模型1、介绍下runtime的内存模型(isa、对象、类、metaclass、结构体的存储信息等)对象:OC中的对象指向的是一个objc_object指针类型,typedef struct objc_object *id;从它的结构体中可以看出,它包括一个isa指针,指向的是这个对象的类对象,一个对象实例就是通过这个isa找到它自己的Class,而这个Class中存储的就是这个实例的方法列表、属性列表、成员变量列表等相关信息的原创 2020-05-26 16:01:40 · 1224 阅读 · 0 评论 -
iOS页面卡顿及性能优化思考
卡顿产生的原因在屏幕成像的过程中,CPU和GPU的职责及CPU:负责对象的创建和销毁、对象属性的调整、布局计算、文本的计算和排版、图片的格式转换和解码、图像的绘制(Core Graphics)。GPU:负责变换、合成、纹理的渲染。CPU 把计算好的数据给 GPU,GPU 来渲染,渲染后的数据放在帧缓存(缓冲区,有两块缓冲区,前帧缓存和后帧缓存,协调使用,效率高)中。然后,视频控制器...原创 2020-03-18 18:44:48 · 588 阅读 · 0 评论 -
iOS扩展机制category与associative理解
category与associative作为objective-c的扩展机制的两个特性,category即类型,可以通过它来扩展方法;associative,可以通过它来扩展属性;在iOS开发中,可能category比较常见,相对的associative,就用的比较少,要用它必须使用的头文件,然后就可以自由使用objc_getAssociatedObject以及objc_setAssociated原创 2014-03-10 19:10:28 · 1151 阅读 · 0 评论 -
使用授权的手机直接通过网页安装app的方法
利用itms-services:协议实现ipa的一键安装。适用于对已授权的手机安装通过网页安装app。包括299$证书打的包,自己开发证书打的包安装到自己注册的开发设备上。同时也支持越狱的手机直接安装。准备条件:1.一台http的web服务器,用于显示网页,存放文件,下载ipa。2.一个html页面叫做Test.html3.一个plist文件,叫做Test.plist4.一个可原创 2014-03-11 13:15:05 · 3840 阅读 · 0 评论 -
ARC 和 非ARC 下 oc 对象 和 CF 对象的转换
在OC和FC之间进行转化的时候,主要是对象的归属问题。共有两种方式:1、使用宏,可以标识归属者从OC到CF,还是从CF到OC。NS_INLINE CFTypeRef CFBridgingRetain(id X) { return (__bridge_retain CFTypeRef)X; } NS_INLINE id CFBridgingRelease(CFTy原创 2014-03-11 11:30:24 · 1935 阅读 · 0 评论 -
PO/POJO/BO/DTO/VO/DAO的区别
PO :persistent object持久对象1 .有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录。2 .在hibernate持久化框架中与insert/delet操作密切相关。3 .PO中不应该包含任何对数据库的操作。 ----------------------------------------------------转载 2014-03-11 15:38:32 · 1230 阅读 · 0 评论 -
IOS 无法设置1像素线宽(高) 解决方案
由于iphone 早起的设备都是屏幕分辨率是320*480后来apple 在iPhone 4中采用了名为Retina的显示技术,iPhone 4采用了960x640像素分辨率的显示屏幕,相当于iPad屏幕78%的像素 。由于屏幕大小没有变化,还是3.5Retina display英寸,分辨率的提升将iPhone 4的显示分辨率提升至iPhone 3G原创 2014-03-12 16:24:29 · 2815 阅读 · 0 评论 -
ios 截图 图片合成 画纯色UIimage
1、截取部分UIImage-(UIImage *)clipImageFromImage:(UIImage *)orgImage Rect:(CGRect)clipRect{ CGImageRef imageRef = orgImage.CGImage; CGImageRef subImageRef = CGImageCreateWithImageInRect(imageRef转载 2014-03-11 20:00:24 · 1337 阅读 · 0 评论 -
Xcode开发技巧之Code Snippets Library
引言 在项目开发中,我们经常可以看到如下所示的代码:1 @property (nonatomic, copy) NSString *isbatchapprove;2 @property (nonatomic, copy) NSString *currentResult;3 @property (nonatomic, copy) NSString *strVersion;4 @p转载 2014-03-13 17:22:33 · 1317 阅读 · 0 评论 -
iOS调试技巧---查看View的层次结构 [view recursiveDescription]
被隐藏的指令是recursiveDescription,你可以简单地用它对view进行检查,在view中调用recursiveDescription来打印它的继承关系。 由于是私有方法,键入时不会有任何提示,注意不要输错。原创 2014-03-13 19:12:10 · 8619 阅读 · 0 评论 -
UILocalNotification本地通知介绍
// 执行通知一定要退出应用或挂起应用(进入后台)才能收到通知。// 创建本地通知UILocalNotification *notification = [[UILocalNotification alloc] init];// 通知触发时间// 10秒钟之后触发notification.fireDate = [NSDate dateWithTimeIntervalS原创 2014-03-14 15:58:46 · 1284 阅读 · 0 评论 -
iOS7.1企业应用"无法安装应用程序 因为证书无效"的解决方案
今天升级了iOS7.1后发现通过之前的url无法安装企业应用了,一直提示“无法安装应用程序 因为http://xxx.xxx.xxx证书无效”,折腾了一番,终于在StackOverFlow上找到了答案。在这里分享给大家。StackOverFlow链接:http://stackoverflow.com/questions/20276907/enterprise-app-deployment-转载 2014-03-14 19:26:27 · 2764 阅读 · 0 评论 -
C/C++中的五个预定义的宏名
C/C++中的五个预定义的宏名,它们是:__LINE____FILE____DATE____TIME____STDC__C++中还定义了 __cplusplus如果编译器不是标准的,则可能仅支持以上宏名中的几个,或根本不支持。记住编译程序也许还提供其它预定义的宏名。__DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字,如Ma原创 2014-03-14 15:46:50 · 2127 阅读 · 0 评论 -
在ARC与非ARC下 iOS创建单例 遇到的问题
1、非ARC单例 static InstanceManager* sharedManager = nil;+ (InstanceManager*) sharedInstance{ @synchronized (self) { if (sharedManager == nil) { [[self alloc] init原创 2014-03-10 16:09:58 · 1265 阅读 · 0 评论 -
苹果App Store审核指南中文翻译 (希望对个人开发中有所帮助)
前言感谢您付出宝贵的才华与时间来开发iOS应用程程序。从职业与报酬的角度而言,这对于成千上万的开发员来说一直都是一项值得投入的事业,我们希望帮助您加入这个成功的组织。我们发布了《App Store审核指南》(App Store Review Guidelines),希望通过它帮您避开开发应用程序过程中的一些问题,并帮你在提交应用时加快审核流程。 我们将应用程序(Apps转载 2014-03-10 16:16:01 · 1411 阅读 · 0 评论 -
IOS7中UITableView中cell的使用 drawRect失效
在iOS7中,使用UITableView的时候,对于cell要注意:[cell addSubview:userTextField] ; 这种用法不能再用了,应该使用 [cell.contentView addSubview:userTextField] 的方式。 UITableViewCell的定制 以前可以直接继承UITableViewCell然后drawRect 可以实现原创 2014-03-10 17:05:38 · 4234 阅读 · 0 评论 -
NSInvocation的使用
在 iOS中可以直接调用 某个对象的消息 方式有2种一种是performSelector:withObject:再一种就是NSInvocation第一种方式比较简单,能完成简单的调用。但是对于>2个的参数或者有返回值的处理,那就需要做些额外工作才能搞定。那么在这种情况下,我们就可以使用NSInvocation来进行这些相对复杂的操作NSInvocation可以处理参数、返回值。会j转载 2014-03-28 10:37:04 · 767 阅读 · 0 评论 -
NSString,NSMutableString使用retain, copy理解
NSString 应用 retain 还是 copy?原创 2014-03-17 18:03:09 · 3121 阅读 · 0 评论 -
"ios模拟器未能安装此应用程序"解决办法
"ios模拟器未能安装此应用程序"解决办法!原创 2014-03-17 15:52:33 · 1823 阅读 · 0 评论 -
消息中心NSNotificationCenter理解
NSNotificationCenter 是 Cococa消息中心,统一管理单进程内不同线程的消息通迅,其职责只有两个:1,提供“观查者们”对感兴趣消息的监听注册[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationName:) name: @"Notifica原创 2014-03-19 17:55:09 · 1003 阅读 · 0 评论 -
使用Symbolicatecrash和xcrun atos分析crash log
1. 找到Symbolicatecrash文件/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/(附:Mac系统显示隐藏文件转载 2014-04-14 18:33:24 · 941 阅读 · 0 评论 -
正确使用Block避免Cycle Retain和Crash
Block简介Block作为C语言的扩展,并不是高新技术,和其他语言的闭包或lambda表达式是一回事。需要注意的是由于Objective-C在iOS中不支持GC机制,使用Block必须自己管理内存,而内存管理正是使用Block坑最多的地方,错误的内存管理 要么导致return cycle内存泄漏要么内存被提前释放导致crash。 Block的使用很像函数指针,不过与函数最大的不同是:Bl转载 2014-03-28 17:42:27 · 879 阅读 · 0 评论 -
IOS UISearchDisplayController 点击搜索出现黑条问题解决方案
最近项目遇到一个很奇葩的问题点击按钮启动 presentViewController 的时候出现下图效果:代码: AddFriendViewController *addFriendVC = [[AddFriendViewController alloc] init]; UINavigationController *nav =[[UINavigationContr原创 2014-03-19 16:58:09 · 1546 阅读 · 0 评论 -
IOS图像拉伸解决方案
UIButton实现背景拉伸,即图片两端不拉伸中间拉伸的办法有如下两种:第一种方法很简单而且使用性更广。做法就是直接拉伸想要setBackgroundImage的image,代码如下:UIImage *image = [UIImage imageNamed:@"image.png"]; image = [image stretchableImageWithLeftCapWidth:flo原创 2014-03-19 10:19:30 · 2214 阅读 · 1 评论 -
xcode自带的svn无法上传“.a”(静态库)文件解决
xcode自带的svn无法上传“.a”(静态库)文件解决 “.a”(静态库)文件无法上传(svn工具:Versions)网上查询了一下,说是Xcode自带的svn和Versions以及一些其它工具都不能上传".a"文件。解决办法如下:1.打开终端,输入cd,空格,然后将需要上传的.a文件所在的文件夹(不是.a文件)拖拽到终端(此办法无需输入繁琐的路径,快捷方便),回车;2.之后转载 2014-03-20 10:05:12 · 1541 阅读 · 0 评论 -
使用ALAssetsLibrary读取所有照片
一.ALAssetsLibrary介绍ALAssetsLibrary提供了访问iOS设备下”照片”应用下所有照片和视频的接口;从ALAssetsLibrary中可读取所有的相册数据,即ALAssetsGroup对象列表;从每个ALAssetsGroup中可获取到其中包含的照片或视频列表,即ALAsset对象列表;每个ALAsset可能有多个representations表示,即AL转载 2014-03-20 13:02:00 · 7686 阅读 · 1 评论 -
锁屏或按Home键后继续播放音乐
一般听音乐的app在锁屏状态和按home键后都能继续播放音乐,有些强大的甚至在来短信后能够继续播放,不被中断,比如:百度ting。本文主要介绍锁屏和按home键后仍播放音乐实现。主要依靠“音频会话”(AVAudioSession)来实现。详细关于AVAudioSession的介绍见参考一。它可以处理1)您的音频在Ring/Silent切换过程中是否变为无声2)在屏幕锁定状态时您的音转载 2014-04-16 11:06:56 · 2314 阅读 · 0 评论 -
beginUpdates和endUpdates 实现UITableView的动画块
我们在做UITableView的修改,删除,选择时,需要对UITableView进行一系列的动作操作。(以下是删除动画效果)这样,我们就会用到- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPa原创 2014-03-31 14:42:27 · 3349 阅读 · 0 评论 -
UIView 的 autoresizingMask 属性介绍
在 UIView 中有一个autoresizingMask的属性,它对应的是一个枚举的值(如下),属性的意思就是自动调整子控件与父控件中间的位置,宽高。enum { UIViewAutoresizingNone = 0, UIViewAutoresizingFlexibleLeftMargin = 1 UIViewAutoresiz原创 2014-03-21 15:03:48 · 887 阅读 · 0 评论 -
Block的引用循环问题 (ARC & non-ARC)
2010年WWDC发布iOS4时Apple对Objective-C进行了一次重要的升级:支持Block。说到底这东西就是闭包,其他高级语音例如Java和C++已有支持,第一次使用Block感觉满简单好用的,但是慢慢也遇到很多坑。本文聊聊ARC和non-ARC下Block使用中的引用循环问题,最近遇到了好几次这种问题,还是深入记录下。先来套题目热热身,貌似能够全部答对的人蛮少的Block实现转载 2014-03-21 16:27:58 · 819 阅读 · 0 评论 -
tableView:canEditRowAtIndexPath: crash when popping viewController
我有一个的ViewController有一个UITableView,其中我允许编辑(删除)或者滑动出现删除按钮。 如果删除按钮显示出来后点击导航UINavigationController的返回按钮,即当我popViewControllerAnimated:应用程序崩溃.原创 2014-04-17 15:55:21 · 3315 阅读 · 2 评论 -
零值比较--BOOL,int,float,指针变量与零值比较的if语句
这是程序员面试的一道常见题,也是个C++基础问题。若只在大学里看过几本基础的编程入门书,看见这道题可能会觉得奇怪,不就是和0比较吗,直接拿出来比就是了,其实非也。下文引自google搜索结果,出处不详,高手可以无视,菜菜留下,记得做好笔记。首先给个提示:题目中要求的是零值比较,而非与0进行比较,在C++里“零值”的范围可就大了,可以是0, 0.0 , FALSE或者“空指针”。int型变量 n转载 2014-03-21 17:44:02 · 1090 阅读 · 0 评论 -
Could not find a storyboard named 'Main' in bundle
用xcode新建工程,将development target 设置为5.0,在5.0的设备上运行报错“Could not find a storyboard named 'Main' in bundle”解决办法如下:打开storyboard前:(如图)将设置改为如下图所示,再运行即可 (Use Alutolayout去掉钩 并且Localization原创 2014-03-22 16:20:36 · 1213 阅读 · 0 评论 -
the app referencesnon-public selectors in payload
当我们上传验证的时候,出现了the app referencesnon-public selectors in payload/项目名.app/项目:字符 的警告,可以不理它,但是我们也可以找出源头解决它。例如我们看到了这样的提示:转载 2014-04-18 12:00:18 · 4778 阅读 · 0 评论 -
ARC开启的情况下是否需要对GCD对象dispatch_release ?
If your deployment target is iOS 6.0 or Mac OS X 10.8 or laterARC will manage your queue for you. You do not need to (and cannot) use dispatch_retain or dispatch_release if ARC is enabled.Starting原创 2014-04-04 13:05:49 · 2118 阅读 · 0 评论 -
iOS 7 教程:定制iOS 7中的导航栏和状态栏
注:本文译自Customizing Navigation Bar and Status Bar in iOS 7近期,跟大多数开发者一样,我也正忙于对程序进行升级以适配iOS 7。最新的iOS 7外观上有大量的改动。从开发者的角度来看,导航栏和状态栏就发生了明显的变化。状态栏现在是半透明的了,这也就意味着导航栏会显示在状态栏后面。有些情况下,导航栏的背景图片可以延伸显示到状态栏后面。转载 2014-05-05 13:44:52 · 817 阅读 · 0 评论 -
关于自定义 UITABLEVIEWCELL 复用问题
自定义UITableViewCell的方法有很多 发现一些人都会遇到自己定义的cell里面图片错乱的问题 这个问题往往是因为没有实现prepareForReuse这个方法导致的.UITableViewCell在向下滚动时复用, 得用的cell就是滑出去的那些, 而滑出去的cell里显示的信息就在这里出现了 解决的方法就是在UITableViewCell的子类里实现perpareForReu转载 2014-04-04 16:22:01 · 1247 阅读 · 0 评论 -
Creating URL query parameters from NSDictionary objects in ObjectiveC
//// Http.m// test//// Created by robin on 14-4-4.// Copyright (c) 2014年 robin. All rights reserved.//#import "Http.h"@implementation Http// 参数URL加密+(NSString*)urlEscape:(NSString *)u原创 2014-04-04 17:40:08 · 1415 阅读 · 0 评论 -
IOS开发之无法选择模拟器显示NO Scheme
从COCOAchina上下载了一个用雅虎财经API做的股票K线代码,当编译的时候,无法选择模拟器。如下图点击模拟器选择区域如下图,之后选择Manage Schemes之后进入新的界面显示选中Autocreate schemes,之后点击Autocreate Schemes Now,上图变化成下图:选中shared,之后点击OK,在转载 2014-05-07 12:59:56 · 1087 阅读 · 0 评论 -
Accidentally modified an iOS SDK header file, now I cannot compile in simulator
xcode提示下面错误: fatal error: file '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/原创 2014-04-22 09:59:54 · 2745 阅读 · 0 评论