
Objective-C
泥瓦罐
跟随大神的脚步,前进....
展开
-
常用类-NSArray
注:NSArray一经创建就不可以更改,只能存储NSObject类子类的对象,不能直接存储C语言基本数据类型,也不能直接存储nil空类型的对象。(直接存储是指,不经过处理的存储) 创建数组@[@”“, @”“]; // 直接写出数组中的对象 NSArray *boxes = @[ @"12", @"34", @"56" ];+arrayWithObjects // 列出原创 2016-08-03 15:17:15 · 283 阅读 · 0 评论 -
内存管理机制MRR/MRC和ARC
内存管理规则当你使用new、alloc、copy方法创建一个对象时,该对象的引用计数器值为1.当不再使用该对象时,你要负责向该对象发送release或者autorelease消息。使用其他方法获取对象,则假设该对象的引用计数器为1,切已经设置了自动释放,你不必对其进行管理;当你拥有该对象,则需要保留(retain),在操作完成后还需要释放这个对象。如果你保留了某个对象,你需要释放或自动释放该对原创 2016-08-01 16:52:08 · 1526 阅读 · 4 评论 -
category的应用
创建对私有方法的向前引用。一般情况下,没有在.h接口文件中声明,只有在.m文件中出现的方法,外界是不能调用的。 但是通过定义类别后,把这个.m文件中的方法在类别的.h文件中声明出来,外界就可以调用了。 这种方式就是对私有对象的向前引用。向对象添加非正式协议。正式协议是通过@protocol关键字声明的一系列方法,然后由准守协议的类去实现这些方法。非正式协议是通过分类,将正式协议里声明的方法声原创 2016-08-01 17:51:28 · 305 阅读 · 0 评论 -
关于内存管理的一些小问题
????????????????????????retainCount????????????0.@autoreleasepool { NSObject *obj = [[NSObject alloc] init]; [obj release]; NSLog(@"retainCount is %lu", obj.retainCount); } ????????原创 2016-08-01 16:53:03 · 404 阅读 · 0 评论 -
继承
语法@interface ClassName : NSObject @end 继承用 : 表示。子类可以从父类得到什么接口中声明的实例变量。接口中声明的方法。父类遵守的协议,子类也会默认遵守。注意事项Objective-C是单继承的。谁的实例变量由谁进行维护。要使用方法访问父类的实例变量。子类的对象中有一个isa指针,指向的是它所属的类。每原创 2016-08-01 17:44:48 · 285 阅读 · 0 评论 -
常用类-NSMutableDictionary
NSMutableDictionary是NSDictionary的子类,在 常用类-NSDictionary 一篇中的API都适用于NSMutableDictionary,下面看下其独有的API。常用API预览 -initWithCapacity: 初始化字典空间 -setObject:forKey: 添加key-value - removeObjectForKey: 移除原创 2016-08-05 16:41:51 · 327 阅读 · 0 评论 -
category
什么是category类别一种为现有类添加新方法的方式。它利用OC动态运行时分配机制。它允许你给任何类添加新的方法。实现语法@interface 已有类名 (类别名称) // add your methods @end小例子.h文件,文件名为NSString+NumberConvenience@interface NSString (NumberConvenience) - (NSNu原创 2016-08-01 16:42:03 · 304 阅读 · 0 评论 -
常用类-NSString
NSString注:NSString类的对象是不可变的,就是说,一个字符串一旦被创建,就不可再次改变它的内容。默认使用UTF-16编码。 字符串的创建@”“// 最简单的就是这个啦。NSString *str = @"This is a string."stringWithFormat:// 根据后面的格式化串进行初始化。格式化串和NSLog方法的参数一样。NSString *str原创 2016-08-02 21:52:48 · 316 阅读 · 0 评论 -
常用类-NSMutableString
NSMutableString是NSString的子类,所以 上篇 介绍的NSString所有方法对于NSMutableString来说,都可以使用。因为NSMutableString的对象是可变的字符串。下面来说下其特有的方法。 字符串创建+stringWithCapacity: // 参照给定大小创建字符串 NSMutableString * mStr = [NSMutabl原创 2016-08-03 10:47:33 · 330 阅读 · 0 评论 -
枚举的使用
C语言的枚举typedef enum ENUM_NAME{ ENUM_VAR1, // 默认是int类型,从0开始 ENUM_VAR2}ENUM_NAME;其他的写法就不列举了。Objective-C的枚举在oc中使用枚举可以用NS_ENUM和NS_OPTIONS关键字(确切的讲是对enum的重命名)来定义枚举类型。下面来看看如何使用:typedef NS_ENUM(NS_OPT原创 2016-08-10 11:10:51 · 468 阅读 · 0 评论 -
内存管理
管理的是哪部分内存继承NSObject的类 的对象所占用的内存需要进行管理。C语言的数据类型不需要进行管理。OC对象使用的内存在堆上,需要管理,而C语言的数据存在在栈中,计算机自动管理。不进行内存管理或进行了错误的内存管理将导致的结果内存泄漏:程序没有释放不再使用的对象,就会出现该问题。若程序一直申请内存,却不进行释放,那么内存资源终将耗尽。悬挂指针:程序释放了任然在使用的内存,会导致该原创 2016-08-01 16:47:04 · 265 阅读 · 0 评论 -
protocol
与非正式协议相比,正式协议也是一系列方法的声明。但是,正式协议需要显示的准守。正式协议一般独立成为一个文件。一个类若准守了协议,它必须实现协议的必须方法。如何声明协议使用@protocol // method list@end来声明一个协议。如何遵守协议在声明类的时候,使用@interface ClassName:父类<协议>@end采用了协议之后,类必须实现协议中要求必须实现的方法,对于协原创 2016-08-01 16:43:58 · 450 阅读 · 0 评论 -
OC的消息转发
什么是转发机制当对象接收到与其方法不匹配的消息时,通过消息转发机制可以使对象执行用户预定义的处理过程。消息转发小例子先看下转发图解一步步构建建立DoMyWork类 DoMyWork.h #import <Foundation/Foundation.h> @interface DoMyWork : NSObject @property (nonatomi原创 2016-08-03 17:11:35 · 366 阅读 · 0 评论 -
运行时初探
运行时消息传递消息传递消息传递是指一种在对象之间发送和接收消息的通信模式。在Objective-C中使用消息传递来调用类和类实例的方法。一个发送消息的例子:[receiver messageWithParam: param1 andParam: param2];以上示例由接收器(消息的目的地:类或类实例)和消息(由选择器和参数)组成。消息传递过程消息传递的关键元素- 消息:向类或类实例发送的名原创 2016-08-03 21:39:42 · 275 阅读 · 0 评论 -
NSString的内存问题
先看看我们遇到的问题 从上面运行代码所占用内存来看,并不像我们想的那样内存飚升。这是为什么?看看下面的分析:内存地址的比较测试用例 NSString *str1 = @"123456"; NSString *str2 = @"123456"; NSString *str3 = [NSString stringWithFormat: @"123456"]; NSSt原创 2016-08-04 09:20:57 · 607 阅读 · 0 评论 -
常用类-NSMutableArray
NSMutalbeArray类对象是可变的,它是NSArray类的子类,在 上篇 介绍有关NSArray类的API这里都是可以使用的。下面介绍下NSMutableArray特有的API。原创 2016-08-04 17:13:57 · 297 阅读 · 0 评论 -
常用类-NSDictionary
概述NSDictionary是关键字及其定义的集合。也被称为散列表或关联数组,它使用的是键查询的优化存储方式。它可以立即找出要查询的数据,而不需要遍历整个数组进行查找。在快速查找方面有很大优势。对于NSDictionary对象,一经创建就无法进行修改;若想进行修改,可以通过创建其子类NSMutableDictionary的对象。该篇主要讲述NSDictionary的使用。常用API预览 +原创 2016-08-04 20:30:27 · 361 阅读 · 0 评论 -
内存的划分
内存的划分栈-stack栈中的内存由编译器自动管理。 函数的形参、普通局部变量都存储在栈中。堆-heapC语言中使用malloc函数、OC中使用alloc函数申请的都是堆中的内存。需要程序员手动动态的 申请和释放。若程序员申请过后,没有释放,若程序正常结束,OS会回收这部分内存;也有可能导致程序无法正常结束。静态存储区全局变量、静态变量都存储在静态区。内存分配发生在编译阶段。系统管理。常量区con原创 2016-08-01 16:29:51 · 344 阅读 · 0 评论 -
BOOL
BOOL的实际类型typedef signed char BOOL 注:这意味着BOOL是一个用8bit存储的类型,若将一个多于8bit的类型赋值给BOOL类型,将取最后面的8bit作为它的值。BOOL的取值YES 1;NO 0 注:BOOL isTrue;默认为 0原创 2016-08-01 16:33:02 · 1937 阅读 · 0 评论 -
@property
@property做了什么@property : 在类的接口中、分类接口、协议中声明属性。格式:@property (特性) 属性类型 属性名称。 它会设置与属性关联的setter/getter方法,但是无法完成真正的方法定义。 @synthesize: 在实现文件中完成属性setter/getter方法的定义、实例变量的定义,并在setter/getter方原创 2016-08-01 16:37:18 · 324 阅读 · 0 评论 -
方法
声明格式+/- (返回值) methodName:(参数类型)参数名称 andSome:(参数类型)参数名称… 如:+ (id) initWith:(NSString*) name andHeight:(double) height; 注:没有形参的方法比较简单,- (void)print;: 称为中缀符,是方法名的一部分。一个中缀符匹配一个形参。类方法/静态方法以 + 开头的方法称为类方原创 2016-08-01 16:39:51 · 244 阅读 · 0 评论 -
selector
什么是选择器选择器是一个方法名称,但它以Objective-C运行时使用特殊方式编码,以快速进行查询。 @selector(方法名)给一个方法进行编码,生成选择器。NSObject类提供了一个方法: - (BOOL)respondsToSelector:(SEL)aSelector; 用于检查一个对象是否能响应一个特定消息。选择器可以当做参数进行传递。原创 2016-08-01 16:42:53 · 231 阅读 · 0 评论 -
块-block(语法部分)
什么是block块,也称为闭包。 简单的说,块提供了一种方式可以创建一组语句(即代码块)并将这些语句赋值给一个变量,随后就可以调用这个变量。它可以访问和它在同一个作用域内的变量。如何声明一个bloc通过支持块的语法功能可以声明块类型的变量和常亮。 声明一个块可以使用下面的语法: 返回值类型 (^块的名称) 参数类型 return type (^blockName) (parameterType,原创 2016-08-01 16:56:37 · 887 阅读 · 0 评论