
iOS初级
文章平均质量分 72
Shicuf
兵贵神速!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
OC中的反射机制
代码中用到的类Person.h[objc] view plaincopy#import @interface Person : NSObject +(void)speak; @end Person.m[objc] view plaincopy#import原创 2015-01-26 21:54:54 · 524 阅读 · 0 评论 -
利用类别(Category)为对象添加”实例变量”
属性扩展用objc_setAssociatedObject,objc_getAssociatedObject,方法扩展用category主要利用ObjectiveC的C API中函数:void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy p转载 2014-12-24 14:06:22 · 350 阅读 · 0 评论 -
iOS 之OC内存管理(一)
这个系列打算写一些我对Iphone开发内存管理的理解。是建立在读者对Objective C的内存管理已经有一定理解的基础上,内容将包括实践准则,autorelease原理剖析,内存泄露的调试等。如果您对Objective C内存管理不太了解,建议先读一下Vince Yuan的这个教程。在进行IPhone开发时, 内存管理是个相对比较难以理解的东西。Objective-C使用了一种介于C#和转载 2014-12-24 10:56:26 · 364 阅读 · 0 评论 -
iOS 之开发中的几个小技巧
1、Xcode调试技巧—在系统抛出异常处设置断点有时候我们的程序不知道跑到哪个地方就 crash 了,而 crash 又很难重现。保守的做法是在系统抛出异常之前设置断点,具体来说是在 objc_exception_throw处设置断点。设置步骤为:首先在 XCode 按 CMD + 6,进入断点管理窗口;然后点击右下方的 +,增加新的 Symbolic Breakpoint。在转载 2014-12-24 11:10:59 · 414 阅读 · 0 评论 -
iOS 之KVC简介
KVC,即:Key-value coding,它是一种使用字符串标识符,间接访问对象属性的机制,它是很多技术的基础。主要的方法就两个,setValue:forKey,valueForKey在Programming Guide中说,使用KVC可以简化代码,但事实上使用起来,还是要看具体情况。代码实例:1.首先定义两个DataModel,这种DataModel定义是无法转载 2014-12-24 13:34:34 · 251 阅读 · 0 评论 -
iOS 之UIScrollView的常用方法
初始化代码方法为:mainView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.frame.size.width, 400)];//初始化scrollview方法mainView.directionalLockEnabled = YES;//锁定滑动的方向mainV转载 2014-12-24 10:45:07 · 342 阅读 · 0 评论 -
iOS 之OC字符串
Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重新给这个字符串赋值。而NSMutableString 创建赋值以后可以动态在该字符串上更改内容与长度。1.创建经典的NSString字符串NSString 与 char*转载 2014-12-24 10:51:09 · 375 阅读 · 0 评论 -
iOS 之#import、#include、@class
#include #include #include "xx.h":用于对用户自定义的文件的引用,编译器首先会去用户目录下查找,然后去安装目录,最后去系统目录查找。 注:使用include要注意重复引用的问题: class A,class B都引用了class C,class D若转载 2014-12-24 10:54:57 · 319 阅读 · 0 评论 -
iOS 之NSDictionary深复制
目标:把NSDictionary对象转换成NSMutableDictionary对象,对象内容是字符串数组,需要实现完全复制(深复制)。如果调用NSDictionary的mutableCopy方法,可以得到一个NSMutableDictionary对象,但这只是浅复制,如果我们修改NSDictionary中数组内的值(当然,数组必须是NSMutableArray),会发现,NSMutableD转载 2014-12-24 11:03:14 · 889 阅读 · 0 评论 -
iOS 之属性方法的选取原则
ios 中的property 就是自动生产get/set方法的时候使用的。@property定义一个已经存在的属性@synthesize实现具体的访问方法retain:setter方法对参数进行release旧值再retain新值,所有实现都是这个顺序assign:setter方法直接赋值,不进行任何retain操作,适合数值,不直接拥有的delegate对象转载 2014-12-24 11:04:26 · 361 阅读 · 0 评论 -
iOS 之init、loadView、viewDidLoad、viewDidUnload、dealloc
由init、loadView、viewDidLoad、viewDidUnload、dealloc的关系说起init方法在init方法中实例化必要的对象(遵从LazyLoad思想)init方法中初始化ViewController本身loadView方法当view需要被展示而它却是nil时,viewController会调用该方法。不要直接调用该方法。如转载 2014-12-24 11:22:36 · 542 阅读 · 0 评论 -
iOS 之self和super
在objc中的类实现中经常看到这两个关键字”self”和”super”,以以前oop语言的经验,拿c++为例,self相当于this,super相当于调用父类的方法,这么看起来是很容易理解的。但是它们真正是如何调用的呢? 你知道吗?以下面的代码为例:@interface Person:NSObject {NSString* name;转载 2014-12-24 11:30:27 · 237 阅读 · 0 评论 -
iOS 之self = [super init]
Objective-C的推荐init方法写法如下:- (id) init{ if(self = [super init]) { //为子类增加属性进行初始化 } return self;}返回值为id类型,id类型可以赋值给其他类型指针,其他类型指针也可以赋值给id类型obc中子类指针不能直接赋值给父类指针[super ini转载 2014-12-24 11:31:55 · 280 阅读 · 0 评论 -
iOS 开发之故事版
Storyboard)是一个能够节省你很多设计手机App界面时间的新特性,下面,为了简明的说明Storyboard的效果,我贴上本教程所完成的Storyboard的截图: 现 在,你就可以清楚的看到这个应用究竟是干些什么的,也可以清楚的看到其中的各种关系,这就是Storyboard的强大之处了。如果你要制作一个页面很多 很复杂的App,Storyboard可以帮助你解决写很多重复的跳转方原创 2015-01-16 23:23:39 · 694 阅读 · 0 评论 -
iOS 之KVO简介
一,概述KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。二,使用方法系统框架已经支持KVO,所以程序员在使用的时候非常简单。1. 注册,指定被观察者的属性,2. 实现回调方法3. 移除观察三转载 2014-12-24 13:33:41 · 287 阅读 · 0 评论 -
iOS 之icon和default图片命名规则
一、应用图片标准iOS控件里的图片资源,苹果已经做了相应的升级,我们需要操心的是应用自己的图片资源。就像当初为了支持iPhone 4而制作的@2x高分辨率版本(译者:以下简称高分)图片一样,我们要为iPad应用中的图片制作对应的高分版本。我知道不少开发者很有预见性的早在iOS 5.0 SDK上就完成了这一步升级。可是我还是要强调一点,那就是之前 Michael Jurewitz (@Jury)转载 2014-12-24 13:05:07 · 388 阅读 · 0 评论 -
OC中的分类和协议
OC中经常使用分类和协议,分类和协议在项目后期可能会经常用到,尤其是为某个已经成熟的模块添加功能的时候。因为: 1,使用分类(category)可以以模块的方式向类添加方法. 2,创建标准化的方法类表供其他人实现. 下面将对分类和协议做一个详细介绍。一、分类 使用场景:1,有时候在处理类定义时,可能想要为其添加一些新方法.原创 2014-12-21 15:34:49 · 555 阅读 · 0 评论 -
UITextView实现placeholder
我们知道在iOS开发时,控件UITextField有个placeholder属性,UITextField和UITextView使用方法基本类似,有两个小区别:1.UITextField单行输入,而UITextView可以多行输入。2.UITextField有placeholder属性,而UITextView没有。至于两者的代理方法,原理基本差不多,只是方法名略有差异。 如何为UI原创 2014-12-20 11:38:45 · 545 阅读 · 0 评论 -
OC中的NSDictionary初始化
字典就是关键字及其定义(描述)的集合。Cocoa中的实现字典的集合NSDictionary在给定的关键字(通常是一个NSString)下存储一个数值(可以是任何类型的对象)。然后你就可以用这个关键字来查找相应的数值。 不同于数组,字典(也被称为散列表或关联数组)使用的是键查询的优化存储方式。它可以立即找出要查询的数据,而不需要遍历整个数组进行查找。 可使用dic原创 2014-12-20 14:33:11 · 733 阅读 · 0 评论 -
OC中的property简介
对于一个严谨的程序员来说,内存管理和多线程显得异常重要。在手机内存有限的情况下,对内存的管理要求更高,不再使用的内存空间如果不能得到及时释放,会让程序运行的内存迅速递增,内存使用爆表而被系统干掉,造成程序闪退;如果出现野指针,则会直接让程序崩溃。这些对于程序来说都是非常致命的。如果对多线程把握不好,不能处理死锁和线程依赖,则因为多线程的线程安全导致的Bug是很难解决的。 今天简单原创 2014-12-20 12:37:52 · 837 阅读 · 0 评论 -
UITableViewCell中添加控件
在开发过程中,我们将常会用到UITableView,要想设计出吸引眼球的效果,我们需要在UITableViewCell中添加自定义的一些控件。但这里有个问题,我们知道几乎每年苹果都会出一个新版的手机系统,XCode也会经常更新和出新版本,尤其出现扁平化设计之后,更是颠覆了传统的用户体验。 在向UITableViewCell中添加空间的时候,一般首先想到的就是加到它的content原创 2014-12-20 14:49:13 · 1184 阅读 · 0 评论 -
OC中的继承
OC是基于C的,在C的基础上进行封装,使其成为一种面向对象的语言。面向对象中比较重要的一点是继承。学习过OC的人都知道OC是没有多继承的。下面将着重介绍一下OC中的继承问题。 子类通过继承父类,便完全拥有父类的成员变量和成员方法(即属性和方法)。比如说猫是一个类型,它有眼睛、耳朵、鼻子等成员变量,并且会“叫”和“捉老鼠”,那么我们科依此定义一个Cat类,在猫的世界里,我们可以根据原创 2014-12-21 14:39:13 · 414 阅读 · 0 评论 -
OC中的Block属性
Block是苹果极力推荐使用的一个知识点,它的简单实用使其在最近几年变的特别流行,尤其是在不同类之间传值的时候,比通过代理实现要方便得多。OC中的block可以借助C中的函数指针来理解,原理基本类似,不过block的功能非常强大,需要在使用的过程中慢慢体会。那么对于一个类的block属性,我们要用什么样的关键字呢?assign,copy还是retain? Block与其他对象的内原创 2014-12-21 15:14:29 · 4159 阅读 · 0 评论 -
OC中的NSArray
在OC的学习过程中,数组被定义为NSArray。这里的NSArray并不完全等同于C中的数组。NSArray初始化之后,数组容量固定,不可再向其添加对象,如要告便数组容量,则需要使用NSMutableArray。C和OC中的数组最主要的区别是:C中的数组存储的是基本数据类型,比如int、float、double等,但是在NSArray中,存储的是OC对象,所以如果想讲一个基本数据类型添加到NSAr原创 2014-12-21 15:16:59 · 471 阅读 · 0 评论 -
OC中的NSFoundation框架
OC基础学习阶段,除了OC基本语法的学习,很长一段时间要学习NSFoundation。话说,冰冻三尺非一日之寒,对这块知识的学习确实需要时间一点点积累,不可急于求成。 其实学习任何语言的道理都一样,首先要学习语言的基础语法,了解了这种语言语法的独特之处。之后就要学习针对这种语言开发出来的框架,正如牛顿曾讲过的,“我正是站在巨人的肩膀上,才能有现在的成就”。如果原创 2014-12-21 15:46:12 · 1343 阅读 · 0 评论 -
iOS 开发之UIButton的使用
UIButton *btnTemp = [UIButtonbuttonWithType:UIButtonTypeCustom];深度定制一个按钮UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeCustom]; btn1.frame = CGRectMake(0, 0, 200, 140); btn1.c原创 2015-01-29 21:41:47 · 752 阅读 · 0 评论 -
iOS 开发之NSFileManager
NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。每个程序都会有它自己的沙盒,通过它你可以阅读/编写文件。写入沙盒的文件在程序的进程中将会保持稳定,即便实在程序更新的情况下。如下所示,你可以在沙盒中定位文件目录://对于错误信息NSError *error;// 创建文件管理器NSFil转载 2014-12-24 00:21:59 · 325 阅读 · 0 评论 -
iOS 之OC内存管理(二)
如果你能够真正的理解autorelease, 那么你才是理解了Objective c的内存管理。Autorelease实际上只是把对release的调用延迟了,对于每一个Autorelease, 系统只是把该Object放入了当前的Autorelease pool中, 当该pool被释放时,该pool中的所有Object会被调用Release。[1]在Iphone项目中,大转载 2014-12-24 10:57:31 · 253 阅读 · 0 评论 -
iOS 之Cocoa框架
Cocoa框架是什么因素使一个程序成为Cocoa程序呢?肯定不是编程语言,因为在Cocoa开发中您可以使用各种语言;也不是开发工具,因为您在命令行上就可以创建Cocoa程序(虽然那会使开发过程变得复杂,且需要消耗大量时间)。那么,所有Cocoa程序的共同点是什么?是什么使它们变得与众不同?答案是这些程序都是由一些对象组成,而这些对象最终都是从NSObject这个根类继承下来的;还有,这些程转载 2014-12-24 11:00:22 · 844 阅读 · 0 评论 -
Xcode官方文档的使用详解
一直想写这么一个东西,长期以来我发现很多初学者的问题在于不掌握学习的方法,所以,Xcode那么好的SDK文档摆在那里,对他们也起不到什么太大的作用。从论坛、微博等等地方看到的初学者提出的问题,也暴露出他们不知道很多他们的疑惑其实在文档里面写的非常清楚。而有时候当他们想从文档去找解决方案的时候,也往往找不到。或者有些人意识到了,阅读文档是学习的好办法,但是不得要领。中国的技术社区有一个很没意转载 2015-01-25 21:54:36 · 1458 阅读 · 0 评论