随笔分类 -  objective-c

摘要:在for循环中,可以添加断点在循环达到一定条件的时候,进行输出 expr (void)NSLog(@"shuchu : %d",i)运行结果1 2014-03-15 11:27:38.344 NSString[1471:303] 12 2014-03-15 11:27:38.489 NSString[1471:303] shuchu : 03 (lldb) 阅读全文
posted @ 2014-03-15 11:29 墨_守 阅读(140) 评论(0) 推荐(0)
摘要:GCD应该是iOS开发中最常见的多线程使用方法.1 dispatch_sync(queue, block)//同步提交1 dispatch_async (queue, block)// 异步提交1 dispatch_after(time, queue, block)// 同步延迟提交其中第一个参数类型是dispatch_queue_t,就是一个表示队列的数据结构typedef struct dispatch_queue_s *dispatch_queue_t;block就是表示任务的Block typedef void (^dispatch_block_t)( void);dispatch.. 阅读全文
posted @ 2014-01-10 21:45 墨_守 阅读(621) 评论(0) 推荐(0)
摘要:基本概念 自定义对象要支持归档,需要实现NSCoding协议 NSCoding协议有两个方法,encodeWithCoder方法对对象的属性数据做编码处理,initWithCoder解码归档数据来初始化对象 实现NSCoding协议后,就能通过NSKeyedArchiver归档实例代码:User.h1 #import 2 3 @interface User : NSObject4 5 @property(nonatomic,copy)NSString *name;6 @property(nonatomic,copy)NSString *email;7 @property(nonatomi... 阅读全文
posted @ 2014-01-06 12:21 墨_守 阅读(167) 评论(0) 推荐(0)
摘要:基本概念 始终返回一个实例,即一个类始终只有一个实例创建单例设计模式的基本步骤 声明一个单件对象的静态实例,并初始化为nil 创建一个类的类方法,生成一个该类的实例,当且仅当这个类的实例为nil时 覆盖allocWithZone:方法,确保在直接分配和初始化对象时,不会产生另一个对象 实现NSCopying协议,覆盖retain,reatinCount方法,以此确保单例的状态(非ARC,还要覆盖release和autorelease) 在多线程的环境中,注意使用@synchronized关键字,确保静态实例被正确的创建和初始化实例代码:User.h#import @interf... 阅读全文
posted @ 2014-01-04 11:26 墨_守 阅读(198) 评论(0) 推荐(0)
摘要:当触发事件发生时,发送通知出去示例代码: 当孩子睡眠不好的时候,就会发送通知告诉父亲,孩子快要醒来了Child.h#import #define CWSTR @"child wake"@interface Child : NSObject@property(nonatomic,assign)NSInteger sleep;@endChild.m#import "Child.h"@implementation Child-(id)init{ if (self = [super init]) { _sleep = 100; [NSTimer schedule 阅读全文
posted @ 2014-01-04 10:20 墨_守 阅读(436) 评论(0) 推荐(0)
摘要:基本概念 cocoa中提供NSPredicate类,指定过滤器的条件。将符合条件的对象保留下来。创建谓词示例代码://创建谓词,设置一个条件 //判断是否满足条件 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age > 20"]; for (Person *per in arr) { //表示指定对象是否满足谓词条件 BOOL ret = [predicate evaluateWithObject:per]; ... 阅读全文
posted @ 2014-01-03 11:10 墨_守 阅读(302) 评论(0) 推荐(0)
摘要:基本概念 键值观察是一种使对象获取其他对象的特定属性变化的通知机制。 控制器层的绑定技术就是严重依赖键值观察获得模型层和控制器层的变化通知的,对于不依赖控制器层类的应用程序,键值观察提供了一种简化的方法实现检查器并更新用户的界面值。 与NSNotification不同,键值观察并没用所谓的中心对象来为所有观察者提供变化通知。取而代之的,当有变化发生时,通知被直接发送至处于观察状态的对象,NSObject提供这种基础的键值观察方法。 你可以观察任意对象的属性,包括简单属性,对一或对多关系。对多关系的观察者将会被告知发生变化的类型,也就是任意发生变化的对象。 键值观察为所有对象提供自动观... 阅读全文
posted @ 2014-01-02 21:39 墨_守 阅读(283) 评论(0) 推荐(0)
摘要:KVC(KeyValueCoding)的基本概念 KVC是一个用于间接访问对象属性的机制,使用该机制不需要调用存取方法和变量实例就可以访问对象属性 KVC方法在obj-c非正式协议NSKeyValue’Coding中被声明,默认的实现方法由NSObject提供 KVC支持带有对象值的属性,同时也支持纯数值类型和结构,非对象参数和返回类型会背识别并自动封装、解封设置和访问(键值访问) KVC中的基本调用包括- (id)valueForKey:(NSString *)key;和- (void)setValue:(id)value forKey:(NSString *)key;这两个方法,他... 阅读全文
posted @ 2014-01-02 13:07 墨_守 阅读(272) 评论(0) 推荐(0)
摘要:协议的基本概念协议的声明看起来比较类似一个类的接口,不同的是协议没有父类也不能定义实例变量。协议是一种特殊的程序设计结构,用于声明专门被别的类实现的方法,协议在以下场合非常有用:需要由别的类实现的方法声明未知类的接口两个类之间的通信协议的基本特点协议可以被任何类实现的方法协议本身不是类,它使定义了一个其他类可实现的接口类目也可以采用协议协议中的关键字@required:表示必须强制实现的方法@optional:表示可以有选择性的方法代理设计模式的基本概念通俗来讲,代理就让别人替自己完成一件事情代理是指一个对象提供机会对另一个对象中的行为发生变化时做出的反应。代理设计模式的基本思想——两个对象协 阅读全文
posted @ 2014-01-01 11:51 墨_守 阅读(515) 评论(0) 推荐(0)
摘要:类目的基本概念:如果有封装好的一个类,随着程序功能的增加,需要在类中增加一个方法,那我们就不必在那个类中做修改或者再定义一个子类,只需要在用到那个方法时添加一个该类的类目即可.1.在类目定义的方法中,会成为原始类的一部分,与其他方法的调用没有区别2.通过给父类定义类目方法,其子类也会继承这些方法.如果子类添加类目方法,父类则不会拥有子类的类目方法.类目方法的应用:对现有类的扩展:在类目中增加的方法会被子类所继承,而且运行时跟其他的方法没有区别作为子类的替代手段:不需要定义和使用一个子类,你可以通过类目直接向已有的类里增加方法对类中的方法归类:利用category把一个庞大的类划分为小块来分别进 阅读全文
posted @ 2013-12-31 11:51 墨_守 阅读(612) 评论(0) 推荐(0)
摘要:多态:是指一种事物的多种状态,不同类的对象可以定义共享相同名称的方法,这个就是多态的表现形式.多态的条件:继承关系,方法重写,父类的声明变量指向子类对象优点:增加了程序的可扩展性权限控制修饰符类内部子类任何地方private√protected√√public√√√示例代码computer.h@interface Computer : NSObject{ /* @protected//默认的,当前类和子类中可用 @public//任意地方 @private//私有的 */ NSString *name; float price;}@prope... 阅读全文
posted @ 2013-12-31 01:04 墨_守 阅读(220) 评论(0) 推荐(0)
摘要:继承,是子类将继承父类所有的变量和方法,省去了在子类中重复写相同的代码,提高了代码的简洁,同时易于修改. 在继承中重载时,要保证子类和父类中的方法名称一样,并且相同的返回类型,参数的个数与重载的方法相同 阅读全文
posted @ 2013-12-30 09:56 墨_守 阅读(143) 评论(0) 推荐(0)