随笔分类 - Objective-C
Objective-C的世界,Objective-C独享
摘要:NSMutableString可变字符串的主要的操作是创建、增加、删除、插入、替换 代码操作如下:
阅读全文
摘要:几种常见的用法为:字符串的创建、字符串的搜索、字符串的比较、字符串的转换用途一:字符串的创建 1 void ex1() 2 { 3 //1.常量字符串的对象 4 NSString *str1 = @"hello world"; 5 NSLog(@"str1 = %@",str...
阅读全文
摘要:Foundation框架NSString、NSMutableString、NSNumber(基本数据类型包装类)、NSValue(特殊类型包装类:指针、数组、结构体)、NSArray、NSMutableArray、NSDectionary、NSSet等等。一、不可变字符串NSString类、可变字符...
阅读全文
摘要:atomic和nonatomic的区别:atomic:设置成员变量的@property属性时,默认为atomic,提供多线程安全。因为多线程的缘故,所有的对象在操作成员变量时都是同步的,因此,为了防止一个对象在操作数据时还没有结束就被另一个对象抢走进行篡改,atomic为此提供了多线程安全机制,采用...
阅读全文
摘要:OC内部:可变对象和不可变对象的深(复制)拷贝问题思考: 不可变对象: 例如NSString对象,因为NSString对象是常量字符串,所以,不可以更改其内容,但是可以修改指向该字符串的指针指向。当对NSString对象做深拷贝时,如果是copy复制方式,其实就是浅复制,只是复制了同一个对象的指针;
阅读全文
摘要:三种文件导入的方式比较:类的前项声明@class、import、include:1、采用@class 类名的方式,它会告诉编译器有这么一个类,目前不需要知道它内部的实例变量和方法是如何定义的,后面会告诉你,现在你就可以直接使用它,节约程序编译时间;2、采用import方式,能避免重复导入同一类,它导...
阅读全文
摘要:对象的保留和所有权的释放:int main(int agrs,char *argv[]){ @autoreleasepool{ Person *person = [[Person alloc]initWithName:@“Tom"]; //retainCount=1 [pe...
阅读全文
摘要:深复制:复制对象时,如果对象中包含对象类型的实例变量,要对对象类型的实例变量也要做对象复制。新对象中的对象类型实例变量和旧对象中的对象类型实例变量指的是不同的对象。不管任何一方实例变量对对象做修改,都互相不影响对方所指向的对象的内容。 .h文件 .m文件 .m主函数 测试结果如下:
阅读全文
摘要:浅复制:复制对象时,如果对象中包含对象类型的实例变量,只是复制指针。新对象中的对象类型实例变量和旧对象中的对象类型实例变量指的是同一个对象。任何一方实例变量对对象做修改,另一方实例变量指向的该对象也就改变了。 .h声明文件 .m实现文件 main.m主函数 测试结果如下:
阅读全文
摘要:对象之间的循环引用 两个对象A、B,有可能会出现一种特殊的情况:A中包含B的实例变量;B中又包含A的实例变量,如果两个实例变量都是强引用(A有B实例变量的所有权,B也有A的实例变量的所有权),然后再两个对象销毁时,会出现A、B都不能正常销毁的情况。 类A: // A.h // 02-循环引用 //
阅读全文
摘要:内存管理:1、OC的对象都是分配在堆里的 Perosn *person = [[Person alloc]init]; Person *person //指针类型的变量,放在栈里。 [[Person alloc]init] //在堆里创建的对象,并初始化。 真正的含义: 用指针变量指...
阅读全文
摘要:ARC是cocoa系统帮你完成对象内存释放的引用计数机制 .h文件 .m文件 主函数测试 测试结果:
阅读全文
摘要:引用计数和字符串 内存中的常量字符串的空间分配与其他对象不同,他们没有引用计数机制 凡是自定义的对象都有引用计数机制; OC内部中对象分为可变对象(NSMutableString等)和不可变对象(NSString、NSArray等), 不可变对象不适用于引用计数的机制,可变的对象适用引用计数机制。
阅读全文
摘要:.h声明文件 .m实现文件 主函数测试 测试结果是:
阅读全文
摘要:手机内存下的类的设计练习: 设计Book类, 1.三个成员变量: title(书名)author(作者)、price(价格) 2.不使用@property,自己完成存取方法(set方法,get方法) 3、加入必要其他的方法 4、并对Book类进行测试 .h声明文件 1 // Book.h 2 //
阅读全文
摘要:总结:继承、分类(Category、extension)、协议(protocol)一、继承:(1)特点: 继承多用于一般父类中的方法功能比较齐全,子类从父类继承过来使用,可以省略很多重复的代码,不仅简化了代码,而且也提高了代码的复用性。(2)过程: 当子类需要的方法和属性在父类中找不到时,子类可以添...
阅读全文
摘要:在下面的代码中,设置了两种不同的协议规则:一种是老师对学生设置的协议:即老师发出命令后,学生站起来、回答问题、坐下; 另一种是我对学生设置的协议:即学生按照我的协议中的初始化函数去初始化一个整数。 //我设置的协议Myprotocol,里面有我设置的协议规则(属性、函数)作为一个单独的文件 //老师
阅读全文
摘要:典型的继承例子:形状Shape为基类,继承它的类有:点类Point、圆类Circle、球体类Sphere、矩形类Rectangle、正方形类Square 点类Point也为基类,继承它的类有:圆类Circle、球体类Sphere、矩形类Rectangle、正方形类Square 圆类Circle也为基
阅读全文
摘要:分类(Category 、Extension) (一)分类的划分 (2) 1、(命名的类别)类别Category:只能添加新的方法,不能添加新变量。 2、(未命名的类别)类的扩展Extension://扩展一般直接写在类的实现文件中 //扩展中定义的都是类中私有的实例变量和方法 (二)分类的使用 (
阅读全文
摘要:六、协议(protocol) 关键字:@optional、@required (1)是一个类共享的一个方法列表 (2)它声明了一系列的方法而不进行实现 (3)遵从某个协议,就是需要实现协议中的方法 (4)类似于java的接口、C++中的纯虚函数 非正式协议、正式协议 重点:正式协议:所有实现正式协议
阅读全文