OC
文章平均质量分 76
王中尧
工作联系:coderzywang@yeah.net
展开
-
iOS 【你的项目内存溢出了吗?】
本文主要阐述了对指针、内存的管理问题,以及如何定位到这些 bug 产生的位置。在项目如果产生一些小概率异常事件,却又不会产生崩溃闪退,如何去调控。代码的健壮性测试,合理调配使用内存。原创 2017-06-24 10:49:22 · 1667 阅读 · 0 评论 -
Objective-C 【OC和C的区别-面向对象-有参/无参方法-类和对象】
————————————————————————————————————————————Hello World//引入头文件//c中的引入头文件的方式//#include //#include #import //引入头文件(单单引入这一个头文件,无后顾之忧,里面包含了太多的头文件,一有全有)//1、面试题:为什么要使用import,import和inclu原创 2015-07-27 21:59:55 · 1719 阅读 · 0 评论 -
Objective-C 【对象-多文件开发简介】
———————————————————————————————————————————如何根据题目准确完整清晰的声明一个类并实现给定的行为/* //下面这个程序教大家如何根据题目去声明一个类,并完成题目中描述的行为。如何让代码表示的准确清晰。 类名:Person 属性:年龄(_age)、体重(_weight) 动作:吃饭(eat)方法、散步(walk)方法 功原创 2015-08-18 18:44:37 · 1266 阅读 · 0 评论 -
Objective-C 【简单的单例模式引入】
单例模式1、概念:单例模式的意图是让类的对象成为系统中唯一的实例,提供一个访问点,供客户类共享资源(唯一实例指的是程序运行期间不管怎么alloc、copy都不会产生新的对象)2、什么情况下使用单例?①类只能有一个实例,而且必须从一个为人熟知的访问点对其进行访问,比如工厂方法。②这个唯一的实例只能通过子类化进行扩展,而且扩展的对象不会破坏客户端代码3、单例模式原创 2015-09-18 19:04:01 · 1001 阅读 · 0 评论 -
Objective-C 【copy的概念-深拷贝-浅拷贝】
copy的概念-深拷贝-浅拷贝1、copy的作用:利用一个源对象产生一个副本对象(且源对象与副本对象之间是互不影响的)2、一个对象可以调用copy或者是mutableCopy方法来创建一个副本对象:copy:创建的是不可变副本mutableCopy:创建的是可变副本3、使用copy的前提:copy:需要遵守NSCopying协议,实现copyWithZo原创 2015-09-17 19:58:56 · 1249 阅读 · 0 评论 -
Objective-C 【封装(setter/getter)-重载(OC中没有重载)-static】
———————————————————————————————————————————封装概念及其原理一个Gun类的例子来详细说明这一环节:#import @interface Gun : NSObject{ @public int _bulletCount;}-(void)shoot;//这是射击的方法,前提是有子弹(子弹>=0),子弹原创 2015-08-21 09:37:21 · 1750 阅读 · 0 评论 -
Objective-C 【集合对象内存管理】
当元素创建完毕后,引用计数为1,如果此时再将该元素存放到一个数组中去,那么元素的引用计数是会再加1的(引用计数为2)。这是因为如果该元素在数组释放之前提前释放了,那么会导致数组里面的该元素无法访问,影响了数组的正常使用。所以为了避免这种情况的发生,所有元素存放到数组时,引用技术会加1。要注意的是,当数组销毁时,数组里面的元素引用技术会减一(只执行了一次 release),而不是元素随着数组原创 2015-09-18 08:38:21 · 1092 阅读 · 0 评论 -
Objective-C 【类方法/对象方法-匿名类-new&alloc init区别】
———————————————————————————————————————————类方法 ①类方法: + 开头的方法(定义的过程形式和对象方法一样,只不过 + 开头,这是唯一的区别) 类方法的调用: [类名 方法名]; ②对象方法: - 开头的方法 对象方法的调用: [实例原创 2015-08-20 09:44:47 · 2652 阅读 · 0 评论 -
Objective-C 【copy和内存管理】
代码:// 1、浅拷贝// NSString *str1=@"lalala";// 这里不能写成上面的形式,因为"lalala"为字符串常量,系统不会收回,也不会对其作引用计数,即使我们对str1如何retain或release,得到的引用计数都是一个十分大的数字(maxIntValue) NSString *str1=[NSString stringWith原创 2015-09-17 20:00:55 · 1113 阅读 · 0 评论 -
Objective-C 【时间与日期处理】
自己在网上找到了一篇很好很好的帖子,担心原作者删除,就copy下来供大家学习。对于学习时间日期这一部分真的非常非常有帮助,无论是方法还是类别,都写的非常详细,赞一个!转载自:wayne23 地址:http://www.cnblogs.com/wayne23/archive/2013/03/25/2981009.html时间与日期处理主要有以下类: NSDate -- 表转载 2015-09-16 17:10:16 · 3433 阅读 · 0 评论 -
Objective-C 【格式化日期时间字符串】
格式化日期时间字符串 Get-Date -Uformat , -format#将字符串格式化为时间格式$dateTimeStr= '20141231T23:59:59'$format= 'yyyyMMddTHH:mm:ss'$formatProvider= [Globalization.CultureInfo]::InvariantCulture[datetim转载 2015-09-16 15:43:09 · 3020 阅读 · 0 评论 -
Objective-C 【NSDate】
#import //NSDate 对象创建//时间的格式化 相互转化void test1(){ // 1、获取时间 NSDate *d1=[NSDate date];//获取当前时间 //打印时间: //2015-09-16 07:10:07 +0000 这是格林威治时间,后面的加号表示时区,我们是东八区,所以说+8就是我们的正原创 2015-09-16 17:02:12 · 1237 阅读 · 0 评论 -
Objective-C 【NSNumber】
NSNumberNSNumber是一个OC中的类我们知道,NSArray中是不能存放基本数据类型的,只能存放OC对象。那么NSNumber就是用来将基本数据类型(数值型的基本数据类型,比如 int、float、double 等)包装成OC对象,然后间接的将基本数据类型存放进数组/字典中。代码:#import int main(int argc, const char *原创 2015-09-16 14:46:14 · 1341 阅读 · 0 评论 -
Objective-C 【NSValue】
NSValue这也是OC中的一个类,和上篇NSNumber差不多,只不过NSNumber是用来将基本数据类型包装成OC对象,而NSValue可以将任何类型包装成OC对象代码://NSValue包装系统原有结构体&NSValue包装自定义结构体#import void test1(){ // 定义一个 NSRect 对象 CGRec原创 2015-09-16 14:48:30 · 1152 阅读 · 0 评论 -
Objective-C 【@property 中的copy关键字】
代码:#import #import "Person.h"int main(int argc, const char * argv[]) { @autoreleasepool { Person *p1=[[Person alloc]init]; NSMutableString *str1=[NSMutableString str原创 2015-09-18 08:24:16 · 1424 阅读 · 0 评论 -
Objective-C 【随机数】
// 介绍一个生成随机数的方法// arc4random_uniform(); 这个方法后面括号中的数字如果是X,那么最后随机出来的数字就是 0~X-1 int random1 = arc4random_uniform(14); //取 0~13 之间的随机数 NSLog(@"%d",random1);原创 2015-11-13 10:38:41 · 1472 阅读 · 0 评论 -
Objective-C 【Category-非正式协议-延展】
——————————————————————————————————————————— 类别(Category)的声明和实现实质:类别又叫类目,它其实是对类的一个拓展!但是他不同于继承后的拓展!(1)在.h文件中,声明类别:@interface ClassName (CategoryName) //注意:这里没有冒号,在类名后面直接紧跟小括号,小括号里面是你创建的类原创 2015-09-03 21:37:17 · 2091 阅读 · 2 评论 -
OC 【在类实现中如何使用 带下划线的成员变量&属性的点语法】
在类实现中如何妥善使用 带下划线的成员变量&属性的点语法原创 2017-03-18 10:33:35 · 1386 阅读 · 0 评论 -
Objective-C 【Method Swizzle】
OC runtime 特性之一 方法交换原创 2017-01-17 18:14:50 · 1778 阅读 · 0 评论 -
Objective-C 【method 及相关方法分析】
Method class_getInstanceMethod(Class aClass, SEL aSelector)IMP class_getMethodImplementation(Class cls, SEL name)BOOL class_addMethod(Class cls, SEL name, IMP imp, const char *types)IMP class_replaceMethod(Class cls, SEL name, IMP imp, const char *types转载 2017-01-17 17:52:27 · 1818 阅读 · 0 评论 -
Objective-C 【NSObject 的实现分析】
NSObject 的实现分析转载 2017-01-17 17:55:21 · 1804 阅读 · 0 评论 -
OC 【判断两个浮点数是否能整除】
判断两个浮点数(CGFLoat)是否可以整除。(Objective-C)原创 2017-02-08 16:17:15 · 5040 阅读 · 0 评论 -
iOS 【Objective-C 微博发布日期格式化】
(1)对服务器端返回的时间日期字符串进行本地化设置(服务器返回的可能不是中国地区的时间格式。如返回欧美时间格式。)(2)自定义时间日期格式,返回符合自定义格式的字符串(3)如何判定一个NSDate对象的是否为今年/今天/昨天(为NSDate提供一个分类,对三种判定分别提供两种版本下的判断。iOS 所有版本均适用/ iOS 8 以后的版本适用)原创 2016-08-07 20:40:13 · 1408 阅读 · 3 评论 -
Objective-C 【KVC(键值编码)】
下面提供解析代码,分步验证读者只需打开对应代码段即可。Person.h#import #import "Dog.h"@interface Person : NSObject{ @private NSString *name;}//@property (nonatomic, copy) NSString *name;@property (nonatom原创 2016-06-10 00:27:26 · 625 阅读 · 0 评论 -
Objective-C 【KVO(键值监听)】
KVO(键值监听-Key Value Observing),利用KVO可以监听对象属性值发生改变。 Person *p1 = [[Person alloc] init]; p1.name = @"1"; // Person *p2 = [[Person alloc] init]; // 为p1的name属性添加监听器self(也就是当前控制器监听原创 2016-06-10 00:34:07 · 964 阅读 · 0 评论 -
Objective-C 【init/initWithFrame调用机制】
init 内部会调用父类的 initWithFrame: 方法,只不过传入的 frame 的值为0,然后父类的 initWithFrame: 方法发现当前的调用对象是子类对象,所以就调用了子类的initWithFrame方法了。这是一个多态的应用。原创 2016-06-10 00:46:02 · 2074 阅读 · 0 评论 -
OC 【动态类型检测】
// 1)判断某个对象是否是该类的实例对象,或者是其子类的实例对象(对象和类)// isKindOfClass使用格式: [对象 isKindOfClass:类对象];// 2)判断某个对象是否是该类的实例对象(单指这个类,不包括其子类)// isMemberOfClass使用格式: [对象 isMemberOfClass:类原创 2016-04-24 01:17:53 · 1758 阅读 · 0 评论 -
Objective-C 【对于@property功能的新认识(setter、getter)】
@property (nonatomic, weak) XXXXX *xyz;比如说这样一句话会有什么作用呢?大家都知道,上面一句话可以默认生成 xyz 的setter和getter方法声明和实现,并生成下划线开头的成员变量(_xyz)另外需要补充的是,如果手动实现了setter和getter方法,那么就不会自动生成setter和getter方法以及下划线开头的成员变量了。原创 2016-03-17 14:51:49 · 1023 阅读 · 0 评论 -
Objective-C 【OC语法:不能修改 某个对象的 结构体属性的 成员】
看题目就知道这篇文章写的是什么了。backBtn.frame.size = CGMakeSize(100, 100); // 这样是错误的写法在OC中是不允许修改某个对象的结构体属性的成员的,上面的语句,backBtn是我们实例化的一个对象,frame是它的结构体属性,而size又是frame这个属性的成员变量。根据OC语法,我们知道上面的代码是错误的。如果想要设置size,我们要这原创 2016-02-04 11:41:12 · 3745 阅读 · 2 评论 -
Objective-C 【NSDictionary 文件操作(重点)&简写形式】
执行代码:#import void test1(){ //Dictionary 的简写形式 NSDictionary *dict1=@{@"1":@"one",@"2":@"two",@"3":@"three"}; NSLog(@"dict1 = %@",dict1); //通过key打印对于value值的 一般 形式 NSLog(@"s原创 2015-09-14 19:55:21 · 2195 阅读 · 0 评论 -
Objective-C 【NSPoint&CGPoint-NSSize&CGSize-NSRect&NSRect】
1、NSPoint 和 CGPoint①他们都是结构体,保存坐标点信息(为什么加NS前缀,只是为了统一起来,但NSPoint是结构体不是类)②NSPoint 和 CGPoint 其实是一个东西,都是表示二维平面的一个点代码:#import int main(int argc, const char * argv[]) { @autoreleasepool {原创 2015-09-15 20:37:40 · 1859 阅读 · 0 评论 -
Objective-C 【NSFileManager 的用法深入探讨】
代码:#import //获取指定文件的信息void test1(){ // 定义目标文件/文件夹的路径 NSString *path1=@"/Users/wangzhongyao/Desktop/Snip20150914_55.png";//一个图片地址 // 创建文件管理对象 NSFileManager *fm1原创 2015-09-15 19:30:34 · 1712 阅读 · 0 评论 -
Objective-C 【@property 的参数问题】
———————————————————————————————————————————@property参数总的来说,这是一种编译器的特性(在生成@property的时候为@property添加相应的属性)格式:@property (参数1,参数2.....) 数据类型 方法名 ★注:修饰@property的参数,可以有一个,可以有两个,可以有三个,可以很多个!原创 2015-09-01 07:36:01 · 1261 阅读 · 0 评论 -
Objective-C 【在手动内存管理中如何写set方法】
———————————————————————————————————————————set方法的内存管理代码:#import @interface Car : NSObject-(void)run;@property int speed;@end@implementation Car-(void)run{ NSLog(@"car原创 2015-08-31 10:00:49 · 3876 阅读 · 2 评论 -
Objective-C 【完整OC项目-购票系统-系统分析-代码实现】
电影院买票系统/演唱会买票系统需求分析:首先我们进入系统,然后会选择买电影票还是买演唱会票,所以这牵扯两个系统的合成。但是我们知道都是买票系统,所以我们可以先创建一个类,属于购买电影票和演唱会的票的共同点,我们可以创建一个Ticket,让电影票MovieTicket和演唱会票ConcertTicket都去继承Ticket,然后再在MovieTicket和Concert中写他们各自特原创 2015-08-29 00:05:03 · 4404 阅读 · 0 评论 -
Objective-C 【内存管理&手动内存管理 综述】
———————————————————————————————————————————内存管理(1)Objective-C的内存管理栈区 存放局部变量(由于基本数据类型占用的存储空间是固定的,由系统去分配,我们不用去管,故栈区存放基本数据类型,)堆区 存放程序运行过程中动态分配的内存空间(对象类型是程序运行过程中动态分配的,他们的大小不固定。比如说是原创 2015-08-29 20:54:40 · 891 阅读 · 0 评论 -
Objective-C 【单个对象内存管理(野指针&内存泄露)】
———————————————————————————————————————————单个对象内存管理(1)野指针①定义了一个指针变量,但是并没有赋初值,它随机指向一个东西②某指针变量指向的内存空间被释放掉了(指向僵尸对象的指针)(2)僵尸对象已经被销毁的对象(无法被使用的对象)(3)空指针没有指向存储空间的指针(里面存的是nil,也就是0)给空指针原创 2015-08-29 20:56:53 · 1804 阅读 · 0 评论 -
Objective-C 【多个对象内存管理(野指针&内存泄漏)】
———————————————————————————————————————————多个对象内存管理(野指针&内存泄漏)(注:这一部分知识请结合“单个对象内存管理”去理解)这一部分的知识比较简单,就牵扯到一个会产生野指针的情形和如何避免内存泄漏问题。代码:#import @interface Car : NSObject-(void)run原创 2015-08-30 09:42:56 · 1712 阅读 · 0 评论 -
Objective-C 【关于导入类(@class 和 #import的区别)】
之前我们分析过 #include 和 #import 的区别,#import不会引起交叉编译,#import 确定一个文件只能被导入一次,使在递归包含中不会出现问题。那么 #import 和 @class 又有什么区别呢?(1)从实质上来说。@class 和 #import 都是引入类的信息。而不同的是 #import 会包含引入类的所有信息,包括实体变量和方法原创 2015-08-27 18:00:36 · 1569 阅读 · 0 评论 -
Objective-C 【多态】
———————————————————————————————————————————多态的概念、实现以及注意事项程序中的多态:不同的对象 以自己的方式去 响应 相同方法名(父类同名的方法) 的能力成为多态。多态的条件:有继承关系、有方法的重写(对应上面一条“以自己的方式”) 用父类类型的指针指向了子类对象代码体现:用父原创 2015-08-23 15:53:57 · 1232 阅读 · 0 评论