摘要:
循环引用所有的引用计数系统,都存在循环应用的问题。例如下面的引用关系:对象a创建并引用了对象b.对象b创建并引用了对象c.对象c创建并引用了对象b.这时候b和c的引用计数分别是2和1。当a不再使用b,调用release释放对b的所有权,因为c还引用了b,所以b的引用计数为1,b不会被释放。b不释放,c的引用计数就是1,c也不会被释放。从此,b和c永远留在内存中。这种情况,必须打断循环引用,通过其他规则来维护引用关系。比如,我们常见的delegate往往是assign方式的属性而不是retain方式的属性,赋值不会增加引用计数,就是为了防止delegation两端产生不必要的循环引用。如果一个U 阅读全文
摘要:
#import "ViewController.h"#import "AFNetworking.h"#import "SSZipArchive.h"@interface ViewController (){ // AFN的客户端,使用基本地址初始化,同时会实例化一个操作队列,以便于后续的多线程处理 AFHTTPClient *_httpClient; // 下载操作 AFHTTPRequestOperation *_downloadOperation; NSOperationQueue *_queue;}@property (weak 阅读全文
摘要:
Foundation和Core Foundation掺杂使用桥接 Toll-Free Bridging在cocoa application的应用中,我们有时会使用Core Foundation(CF),我们经常会在Objective-C和CF之间进行转化。系统使用arc的状态下,编译器不能自动管理CF的内存,这时候你必须使用CFRetain和CFRelease来进行CF的内存的管理。具体的CF内存管理规则见:Memory Management Programming Guide for Core Foundation在OC和FC之间进行转化的时候,主要是对象的归属问题。共有两种方式:1、使用宏 阅读全文
摘要:
[0] Outline -- [1] 版本和平台 -- [2] 与Runtime System交互 -- [3] 方法的动态决议 -- [4]消息转发 -- [5]类型编码 -- [6]属性声明[1] 版本和平台Runtime System对于Objective-C来说就好比是它的操作系统,或者说是运行的支撑平台,它使得Objective-C代码能够按照既定的语言特性跑起来。相对于C/C++来说,Objective-C尽可能地把一些动作推迟到运行时来执行,即尽可能动态地做事情。因此,它不仅需要一个编译器,还需要一个运行时环境来执行编译后的代码。Runtime System分为Legacy和Mo 阅读全文
摘要:
1、在appdelegate.m中找到“application:didFinishLaunchingWithOptions:”通过NSUserDefaults 来进行判断if(![[NSUserDefaultsstandardUserDefaults]boolForKey:@"everLaunched"]) { [[NSUserDefaultsstandardUserDefaults]setBool:YESforKey:@"everLaunched"]; [[NSUserDefaultsstandardUserDefaults]setBool:YESfo 阅读全文
摘要:
iOS发布了很多关于屏幕上键盘的通知。下面列出了这些通知的简要解释:UIKeyboardWillShowNotification当键盘即将要显示的时候将会发出这个通知。这个通知包含了用户信息库,库里面包括了键盘的各种 信息,键盘将以动画的形式显示在屏幕上。UIKeyboardDidShowNotification当键盘显示在屏幕上时将发出这个通知。UIKeyboardWillHideNotification当键盘将要从屏幕上移除时将会发出此通知。通知里包含了用户信息库,库里包括了各种关于键盘信 息的详细信息,当键盘隐藏时的动画,动画的持续时间,等等。UIKeyboardDidHideNotif 阅读全文
摘要:
#import "ViewController.h"@interface ViewController () { NSInputStream *_inputStream; // 输入流 NSOutputStream *_outputStream; // 输出流 NSMutableArray *_dataList;}@property (weak, nonatomic) IBOutlet UITextField *hostName;@property (weak, nonatomic) IBOutlet UITextField *portText;@property (wea 阅读全文
摘要:
1. 什么是PassbookPassbook是苹果公司于北京时间2012年6月12日上午,在全球开发者大会(WWDC)上宣布了iOS 6系统将提供操作一个全新的应用——Passbook这是一款可以存放登机牌、会员卡和电影票的工具。该功能将整合来自各类服务的票据,包括电影票、登机牌、积分卡和礼品卡等Passbook是基于地理位置的,通过定位功能,当用户走到相关商店或场所附近时,对应的票据将会被自动显示Passbook只能在iPhone和iPod touch设备中使用2.实例代码#import "GViewController.h"// 添加框架#import @interfa 阅读全文
摘要:
#pragma mark init方法内部默认会调用initWithFrame:- (id)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { // 里面的图片居中 self.imageView.contentMode = UIViewContentModeCenter; // 里面的文字居中 self.titleLabel.textAlignment = NSTextAlignmentCenter; // 文字字体 self.titleLabel.font = [UIFont systemF 阅读全文
摘要:
简单来说就是:一级一级的找到响应的视图,如果没有就传给UIWindow实例和UIApplication实例,要是他们也处理不了,就丢弃这次事件...对于IOS设备用户来说,他们操作设备的方式主要有三种:触摸屏幕、晃动设备、通过遥控设施控制设备。对应的事件类型有以下三种:1、触屏事件(Touch Event)2、运动事件(Motion Event)3、远端控制事件(Remote-Control Event)响应者链条概念:iOS系统检测到手指触摸(Touch)操作时会将其打包成一个UIEvent对象,并放入当前活动Application的事件队列,单例的UIApplication会从事件队列中取 阅读全文