
OC
中意_中意
这个作者很懒,什么都没留下…
展开
-
取到字符串的指定下标的字符
这个也是非常简单 characterAtIndexint main(int argc, const char * argv[]){ NSString *str = @"中国 I LOVE YOU"; unichar str1 = [str characterAtIndex:1]; NSLog(@"%C",str1); return 0;}这个要注意的是:使用%原创 2015-09-27 21:28:11 · 12359 阅读 · 0 评论 -
字符串比较和相等判断
判断字符串是否相等首先不能用== 来判断,因为==判断的存储在这个字符串的对象的值,这样很容易出错,那么我们用isEqualToString来进行判断int main(int argc, const char * argv[]){ NSString *str = @"jack"; NSString *str1 = [NSString stringWithFormat:@"jack原创 2015-09-27 21:24:41 · 22718 阅读 · 0 评论 -
字符串的常用方法—拼接字符串
stringWithFormat一般来说,我们习惯了使用stringWithFormat来拼接字符串,如下:int main(int argc, const char * argv[]){ NSString *name = @"jack"; int age = 20; NSString *str = [NSString stringWithFormat:@"我的名字%@原创 2015-09-27 20:44:38 · 19718 阅读 · 1 评论 -
NSArray与字符串
将1个字符串以指定的串分隔成1个数组 每1部分就是这个数组的元素. NSString *str = @"中国,广西,北海"; NSArray *arr = [str componentsSeparatedByString:@","]; for(NSString *s in arr) { NSLog(@"%@",s); }将数组中的每1个元素链原创 2015-09-27 23:02:59 · 383 阅读 · 0 评论 -
字符串的替换
这个使用起来就特别简单了 NSString *str = @"12345@163.com"; str = [str stringByReplacingOccurrencesOfString:@"@" withString:@"#"]; NSLog(@"%@",str);使用stringByReplacingOccurrencesOfString来进行替换,效果一目了然原创 2015-09-27 21:26:21 · 499 阅读 · 0 评论 -
NSArray
这个是用来存储OC对象的数组,记住,只能存储OC对象,非OC对象编译就直接报错这是1个类特点: 存储多个数据长度固定只能存储OC对象每1个元素都是有序的创建字符串的时候,不要使用new array alloc等来创建,因为创建出来的数组长度是0,没有意义最常用的创建NSArray数组的方法:arrayWithObjects NSArray *arr = [NSArray arra原创 2015-09-27 22:44:49 · 645 阅读 · 0 评论 -
使用URL读取网页的内容
我们使用stringWithContentsOfURL这个NSString的类方法来读取:int main(int argc, const char * argv[]){ NSURL *url =[NSURL URLWithString:@"file:///Users/chenzongyi/Desktop/abc.txt"] ; NSError *err = nil; NSS原创 2015-09-27 21:07:19 · 7071 阅读 · 0 评论 -
NSMutableArray
特点: 只能存储OC对象 不能存储非OC对象长度不固定,元素可以动态的新增和删除元素的类型仍然是id类型的每1个元素是紧紧的挨着创建NSMutableArray NSMutableArray *arr = [NSMutableArray array];这时候 创建的arr对象 是有意义的,因为这个对象是可变的当然也可以这样创建: NSMutableArray *arr1 = [原创 2015-09-27 23:29:41 · 466 阅读 · 0 评论 -
将字符串数据转换为其他类型
C转OCstringWithUTF8Stringchar *c = "acb"; NSString *str = [NSString stringWithUTF8String:c]; NSLog(@"%@",str);成功的将C字符串转OC字符串OC转C使用UTF8String NSString *str = @"jack"; const char *c = [str原创 2015-09-27 21:39:59 · 999 阅读 · 0 评论 -
NSDictionary
. NSDictionary的存储数据的原理.. 是以键值对的形式存储数据的.. NSDictionary字典数组中的键值对仍然是以数组元素的形式存储的.每1个键值对.并不是按照顺序挨个的存储在字典数组中.当我们往字典数组中存储1个键值对的时候.会根据这个键做1个哈希算法.算出1个下标.然后将键值对存储在下标处的元素之中.. 通过键去取值的时候. 会根据键做1个算法 算出这个键值对存储的元素原创 2015-09-28 23:22:48 · 3102 阅读 · 0 评论 -
NSMutableDictionary
. NSMutableDictionary. 是NSDictionary的子类.是数组,是以键值对的形式存储的数组.相对于父类做的扩展:其中的键值对可以新增和删除.. 创建NSMutableDictionary *dict = [NSMutableDictionary dictionary];创建长度为0的NSMutableDictionary数组 是有意义的 因为这其中的键值对是可以新增和删原创 2015-09-28 23:26:35 · 521 阅读 · 0 评论 -
NSFileManager
. NSFileManager是Foundation框架中的1个类. 作用: 用来操作磁盘上的文件和文件夹的.新建 修改 删除 移动 拷贝文件夹或者文件.创建NSFileManager对象.NSFileManager是1个单例对象.如何去创建1个NSFileManager的单例对象呢?调用这个类的类方法(NSFileManager *)defaultManager;就可以得到这个NSFile原创 2015-09-28 23:38:48 · 672 阅读 · 0 评论 -
自己写一个程序 快速的删除文件
请谨慎使用,因为删除是不放在废纸篓的,所以想恢复就比较难了。#import <Foundation/Foundation.h>int main(int argc, const char * argv[]){ NSFileManager *manager = [NSFileManager defaultManager]; NSString *rootPath = @"/Users/O原创 2015-09-30 19:56:39 · 1388 阅读 · 0 评论 -
常用结构体
定义1个变量表示按钮在IOS界面上的位置 控件的位置指的是控件最左上角的那1点在IOS界面的坐标CGPoint NSPoint初始化CGPoint的方式a. 先声明CGPoint变量,然后再为变量的属性赋值CGPoint p1; p1.x = 18; p1.y = 20;b. CGPoint p2 = {10,20};c. CGPoint p3 = {原创 2015-09-30 20:17:51 · 1400 阅读 · 0 评论 -
copy
copy 拷贝.copy是1个定义在NSObject类之中的1个方法.言下之意就是说所有的OC对象都有这个方法.copy方法的作用: 拷贝、复制1个对象.copy方法.NSString –> copy —> NSString对象. 没有新对象产生,把原来的对象的地址直接返回.像这样的拷贝对象的方式叫做浅拷贝.把对象的地址返回,没有产生新对象.NSMutableString –> copy ->原创 2015-09-30 21:48:47 · 818 阅读 · 0 评论 -
单例模式
. 单例模式. 顾名思义: 单个实例. 单个对象.无论创建多少个对象,也无论创建多少次对象,我希望创建出来的对象都是同1个对象.alloc方法作用: 申请空间.创建对象. 只要是创建对象,一定会调用alloc方法.alloc方法的内部. 就是调用了allocWithZone:方法.并且不建议去重写alloc方法.allocWithZone:做的事情: 它才是真正的申请空间创建对象.并且将创建的对原创 2015-09-30 22:11:05 · 1465 阅读 · 2 评论 -
block与方法 排序各个国家的名称
什么时候block需要作为方法的参数.在方法的内部实现功能的时候.如果在实现某个子功能的时候.如果不确定到底如何实现.只有调用者清楚. 那就让调用者写1段代码实现这个功能 把这个代码通过block参数传递进来.block可以作为函数、方法的返回值. block与函数的异同. 相同点: 都可以封装1段代码在其中.. 不同点:. block是1个数据类型. 而函数就是函数.. block可以作为原创 2015-10-01 10:55:21 · 1353 阅读 · 0 评论 -
NSNumber
. NSArray和NSDictionary只能存储OC对象.无法存储非OC对象.基本数据类型不能存储到 NSArray和NSDictionary之中.NSNumber作用:用来包装基本数据类型.然后将NSNumber对象存储到数组之中.将基本数据类型存储到OC数组中的方式.. 创建1个NSNumber对象. 然后将基本类型的数据包装到NSNumber对象之中.想要包装什么数据 只需要调用对应的原创 2015-09-30 20:25:05 · 1358 阅读 · 0 评论 -
NSValue
基本数据类型的存储我们已经搞定了,那么结构体如何存储呢?NSValueNSValue这个是Foundation框架中的类. 作用:将常用的结构体变量包装起来.然后再将这个NSValue对象存储到数组之中.这样的话就可以间接的将结构体变量存储到OC数组之中.将常用的结构体变量存储到OC数组中的步骤.. 创建1个NSValue对象,调用类方法将结构体变量包装在其中.valueWithXXX. 将原创 2015-09-30 20:32:46 · 1152 阅读 · 0 评论 -
NSDate
. NSDate是1个类. 作用:用来表示日期.. 得到当前系统的时间.创建1个NSDate对象,这个对象所表示的时间就是当前系统的格林威治时间. 就是当前系统的零时区的时间. 东八区. 在北京时间的基础之上减去8个小时. NSDate *date = [NSDate date]; NSLog(@"%@",date);. NSDate对象输出的时间格式:2015-09-28原创 2015-09-30 20:45:47 · 3039 阅读 · 0 评论 -
block与函数
block是1个数据类型. 所以block类型完全可以作为函数的参数或者返回值.block作为函数的参数. 形参就直接声明1个符合要求的block变量就可以了.如果觉得恶心,可以使用typedef简化定义.. 实参代码段的要求必须要和形参的要求一致.如果形参是1个无返回值无参数的block 那么实参的代码段也必须要符合这个要求.. 在传值的时候.先将符合要求的代码段存储在1个block变量之原创 2015-10-01 10:26:20 · 1179 阅读 · 0 评论 -
协议的类型限制
声明1个指针,这个指针指向的对象要求遵守指定的协议.什么类型的对象都可以,唯一的要求就是这个对象要遵守指定的协议.NSObject<协议名称> *obj;这个obj指针只能指向遵守了指定协议的任何对象. 如果没有遵守这个协议 那么编译器会报1个大大的警告.之所以,要求对象要遵守某个协议,是因为我们后面要调用这个对象中的协议方法.其实也可以使用id指针.id指针的好处不会做编译检查. 和NSOb原创 2015-10-01 11:21:07 · 1125 阅读 · 0 评论 -
协议的使用案例—找女朋友
说一下这个案例的需求: - 有1个男孩子 找对象的标准. - 必须 会做饭和洗衣服. - 如果有国企工作优先考虑.GFProtocol.h#import <Foundation/Foundation.h>@protocol GFProtocol <NSObject>@required- (void)washClothes;- (void)cook;@optional- (void)j原创 2015-10-01 11:37:28 · 612 阅读 · 0 评论 -
代理模式 之案例
案例 去北京….Person.h#import <Foundation/Foundation.h>#import "ZaiRenProtocol.h"@interface Person : NSObject@property(nonatomic,copy)NSString *name;@property(nonatomic,strong)id<ZaiRenProtocol> traffic原创 2015-10-01 12:03:18 · 521 阅读 · 0 评论 -
copy 其他
关于引用计数器的问题. 字符串的引用计数器 存储在常量区的字符串对象不允许被回收.所以引用计数器是1个很大的数 并且不允许被改变.存储在堆区中的字符串的引用计数器一开始创建出来是1.浅拷贝的时候.不会产生新对象 但是会让对象的引用计数器+1深拷贝的时候,会产生对象. 产生的新对象的引用计数器为1 原来的对象的引用计数器不变.自定义类实现copy的功能.copy方法是定义在NSObject原创 2015-09-30 22:03:28 · 795 阅读 · 0 评论 -
协议的基本使用
协议:protocol作用: 专门用来声明一大堆方法. (不能声明属性,也不能实现方法,只能用来写方法的声明). 只要某个类遵守了这个协议.就相当于拥有这个协议中的所有的方法声明.协议的声明 @protocol 协议名称 <NSObject> //方法的声明; @end新建1个协议的方式. NewFile OC-File - protocol协议的文件名: .h 并且只有1原创 2015-10-01 11:10:05 · 3836 阅读 · 0 评论 -
延展
延展(Extension).是1个特殊的分类.延展是1个分类.比较特殊.所以它的作用:也是用来扩展1个类.特殊在于:-> 这个分类没有名字.叫做匿名分类-> 这个分类只有声明.不能有单独的实现. 与本类共享1个实现. @interface Student () @end我们新建1个延展.只会生成1个.h文件. 这个延展的声明@interface 本类名 ()@end没有单独的实原创 2015-10-01 09:55:21 · 2137 阅读 · 2 评论 -
集合的内存管理
集合的内存管理.NSArray、NSDictionary都叫做集合 . 在MRC模式下. 当我们将1个OC对象存储到集合之中.这个OC对象的引用计数器会+1当集合被回收的时候,会向存储在集合之中的对象发送1条release消息.. 以@[] @{}创建的集合本身就已经是被autorelase过的了.. 在ARC模式下.集合的元素是1个强类型的指针.原创 2015-09-30 21:40:43 · 1026 阅读 · 0 评论 -
block
block类型的变量的声明虽然block类型的变量是用来存储1断代码的.但是1个block类型的变量并不是任意的代码段都可以存储的 而是有限定的.在声明block变量的时候,必须要指定这个block变量存储的代码的返回值类型是什么,参数是什么.一旦指定. 那么这个block变量中就只能存储这种类型的代码段.. 在声明block变量的时候,必须要指定这个block可以存储的代码段的返回值类型和参原创 2015-10-01 10:17:37 · 1069 阅读 · 0 评论 -
代理设计模式
什么是代理模式.传入的对象,代替当前类完成了某个功能,称为代理模式.利用协议实现代理模式的主要思路定义1个协议.里面声明代理类需要实现的方法列表. 比如这里的1个代理类需要实现载人的方法.创建1个代理类 遵守上面的代理协议 并实现方法在需要代理的类中,定义1个对象属性 类型为id 且遵守代理协议的属性.在代理的类中,调用代理对象的方法.代理模式:有1个对象中有1个属性, 这个属性的可以是任意的原创 2015-10-01 11:45:46 · 1385 阅读 · 0 评论 -
分组导航
分组导航标记#pragma mark 分组名 就会在导航条对应的位置显示1个标题 #pragma mark — 就会在导航条对应的位置显示1条水平分割线#pragma mark —分组名 就会在导航条对应的位置先产生1条水平分割线,再显示标题#import <Foundation/Foundation.h>#pragma mark - 人类@interface Person: NSO原创 2015-09-20 21:38:42 · 903 阅读 · 0 评论 -
类方法
在1个Target中无法访问另外1个Target中的类.OC中的方法分为两种.1).对象方法/实例方法:我们之前学习的方法 就叫做对象方法. 如果想要调用对象方法就必须要先创建对象 通过对象名来调用.2).类方法. 类方法的调用不依赖于对象.如果要调用类方法 不需要去创建对象.而是直接通过类名来调用.声明.1).对象方法的声明:对象方法声明使用 - 号- (返回值类型)方法名; - (void原创 2015-09-20 21:59:45 · 669 阅读 · 0 评论 -
匿名对象
我们之前创建对象的做法. Person *p1 = [Person new]; 让1个指针指向1个对象 这个指针就叫做这个对象的名字.匿名对象. 没有名字的对象,如果我们创建1个对象,没有用1个指针存储这个对象的地址. 也就是没有任何指针指向这个对象 那么这个对象就叫做匿名对象。如何去使用1个匿名对象呢?因为new实际上1个类方法. 这个方法做的事情创建对象(4个步骤). 返回值是创建原创 2015-09-20 22:11:47 · 1965 阅读 · 0 评论 -
类的本质
1. 类加载,当类第一次被访问的时候,这个类就会被加载到代码段存储起来2. 存储的步骤:a) 先在代码段中创建1个Class对象,Class是foundation框架中得一个类,这个Class对象就是用来存储类信息的b) 将类存储在这个Class对象之中 i. 这个Class对象,原创 2015-09-20 20:59:04 · 1002 阅读 · 0 评论 -
OC 结构体与类的区别
1. 结构体与类的相同点:a. 都可以将多个数据封装为1个整体。 struct Date{int year;int month;int day; }; @interface Date:NSObject{int year;int month;int day;}@end 1. 不同点a. 结构体只能封装数据,而类还可以封装行为原创 2015-09-20 21:00:00 · 5689 阅读 · 0 评论 -
NULL 与nil
NULL 2. 只能作为指针变量的值,如果1个指针变量的值是NULL值代表,代表这个指针不指向内存中的任何一块空间 3. NULL 等价于0 NULL其实是一个1个宏 就是0nil只能作为指针变量的值 代表这个指针变量 不指向内存中的任何空间nil其实也等价于0 也是一个宏 就是0 使用建议虽然使用null的地方可以使用nil nil的地方可以使用null 但是不建议乱写c指针原创 2015-09-20 21:21:49 · 904 阅读 · 0 评论 -
多个指针指向同一个对象
同类型的指针变量之间是可以相互赋值的person *p1 = [person new];person *p2 = p1;这里是没有问题的,因为p1 和p2 的类型都是person指针类型的,代表将p1的值赋值给p2,而p1的值是对象的地址,所以就把对象的地址赋值给了p2,所以p1和p2指向了同一个对象。 无论通过p1还是p2去修改对象,修改的都是同1个对象。————— 目前为止,看到new,就是原创 2015-09-20 21:30:09 · 4445 阅读 · 0 评论 -
对象与方法
对象和方法.对象作为方法的参数,对象作为方法的返回值.类的本质是我们自定义的1个数据类型. 因为对象在内存中的大小是由我们决定的. 多写几个属性 对象就大一些 少写几个属性 对象占用的空间就小一些.什么是数据类型: 是在内存中开辟空间的1个模板.既然类是1个数据类型,那么类就可以作为方法的参数.(void)test:(Dog *)dog;这个是完全没有问题的.——-语法注意————-原创 2015-09-20 21:52:30 · 971 阅读 · 0 评论 -
属性的封装
面向对象的三大特征是什么?封装 类就是更高级别的封装.类将数据和行为封装为了1个整体. 好处: -> 屏蔽内部的实现.外界不需要知道内部是如何实现的 只需要知道这个对象有什么用. -> 方便操作. -> 后期的维护十分的便利.继承多态存在的问题.就是为对象的属性赋值的时候 语法上其实只要数据的类型是属性的类型就是可以的. 但是,情理上这么做是不合的.就像P原创 2015-09-20 22:17:58 · 1285 阅读 · 0 评论 -
对象之间的关系
组合关系. 1个对象是由多个对象组合起来的. 比如.计算机对象. 是由主板对象、CPU对象、内存对象、硬盘对象…组合起来的.主板、内存、硬盘作为计算机对象的属性.那么这个时候,计算机对象和主板、内存、硬盘的关系为 组合关系.依赖关系 1个对象的方法的参数是另外1个对象.那么我们就说他们的关系是依赖关系.比如,B类是A类方法的参数,我们就说A类依赖于B类.美女打电话的例子.人类: callWi原创 2015-09-20 22:20:09 · 1205 阅读 · 0 评论