随笔分类 -  Objective-C

摘要:Category可以为任何已有类添加或者替换方法,即使没有源代码,但是不能添加实例变量 #import <Foundation/Foundation.h> NS_ASSUME_NONNULL_BEGIN @interface NSString(TestClass) -(int) getTestVal 阅读全文
posted @ 2018-10-13 00:40 土豆吞噬者 阅读(72) 评论(0) 推荐(0)
摘要:1.KVO(key-value observering)是指当对象的属性值改变的时候,允许另外一个对象接受通知,其中context可以用来区分该通知是发给基类还是自己的。 #import "TestObserver.h" @implementation TestObserver - (void)ob 阅读全文
posted @ 2018-10-13 00:39 土豆吞噬者 阅读(126) 评论(0) 推荐(0)
摘要:1.KVC(key-value-coding)能够让程序通过名称直接存取属性,KVC有关方法定义在NSObject,KVC违背了对象封装理念,因为即使属性声明为readonly,使用KVC依然可以修改实例变量的值。 #import <Foundation/Foundation.h> NS_ASSUM 阅读全文
posted @ 2018-10-13 00:38 土豆吞噬者 阅读(93) 评论(0) 推荐(0)
摘要:1.属性的存取特性 readwrite,自动创建存取方法,默认特性 readonly,只创建取方法 2.属性的多线程特性 atomic,使用锁机制确保对该属性的操作的原子性,默认特性 nonatomic,无原子性,所以速度会快一点,建议使用的特性 3.属性的引用相关特性 strong,在进行存操作时 阅读全文
posted @ 2018-10-11 23:53 土豆吞噬者 阅读(124) 评论(0) 推荐(0)
摘要:1.如果一个类没有实现init方法,那么在调用init初始化的时候所有成员变量都会被初始化为0 2.覆盖NSObject的init方法,instancetype代表返回当前类的实例,在旧版本OC里,还会使用id作为返回类型。因为基类的构造函数有可能返回nil,所以这里需要判断是否为空,这是苹果公司推 阅读全文
posted @ 2018-10-11 23:52 土豆吞噬者 阅读(192) 评论(0) 推荐(0)
摘要:1.苹果系统中大量使用了plist文件来保存配置信息,plist文件由以下对象组成 NSArray NSDictionary NSString NSData NSDate NSNumber 2.通过NSArray和NSDictionary的内建方法可以读写plist文件,代码如下 #import < 阅读全文
posted @ 2018-10-09 00:43 土豆吞噬者 阅读(253) 评论(0) 推荐(0)
摘要:1.OC中的协议类似于Java中的Interface,一个类也可以实现多个协议,但是Java中可以通过匿名内部类直接“new”一个Interface(例如SetOnClickListener(new XXX),OC中似乎不能这么做 2.可以通过@required和@optional标注哪些方法是必须 阅读全文
posted @ 2018-10-09 00:41 土豆吞噬者 阅读(131) 评论(0) 推荐(0)
摘要:1.OC中有四种方法实现回调,分别是目标-动作对,辅助对象,通知,Block对象 2.目标-动作对,是指当某个事件发生时,向指定对象发送指定消息,计时器使用的就是目标-动作对机制,如下代码所示,每隔两秒会执行一次updateLastTime方法,其中NSRunLoop用来保持线程允许并处理事件 - 阅读全文
posted @ 2018-09-24 20:29 土豆吞噬者 阅读(189) 评论(0) 推荐(0)
摘要:1.NSString读写文件 NSString *helloText=@"您好啊!"; NSError *error; if ([helloText writeToFile:@"/tmp/test.txt" atomically:true encoding:NSUTF8StringEncoding 阅读全文
posted @ 2018-09-23 21:38 土豆吞噬者 阅读(448) 评论(0) 推荐(0)
摘要:1.NSSet与NSArray的区别就是NSSet里面的值是不可重复且无序的,在查找速度上NSSet比NSArray更快,而NSDictionary则可以存储键值对,这个键值对也是无序的,键通常是一个字符串(唯一的),而值可以是任意类型的对象 2.和NSArray一样,NSSet和NSDiction 阅读全文
posted @ 2018-09-23 21:36 土豆吞噬者 阅读(148) 评论(0) 推荐(0)
摘要:1.OC中一个类由.h文件和.m文件组成,.h文件负责声明接口,.m文件负责具体实现 2.在.h文件中@interface后面的格式为类名:基类名 3.成员变量需要写在大括号内,最好使用下划线开头,使用成员变量需要写存取方法,为了开发效率,目前推荐使用属性代替成员变量,属性会自动生成带下划线的成员变 阅读全文
posted @ 2018-09-22 14:56 土豆吞噬者 阅读(124) 评论(0) 推荐(0)
摘要:1.NSArray是OC中用来保存对象的数组,NSArray在初始化完毕后不可以再添加或者删除里面的对象,也无法改变对象的顺序,甚至不能赋值,例如下面的赋值语句,编译器会出现错误提示Expected method to write array element not found on object 阅读全文
posted @ 2018-09-10 23:37 土豆吞噬者 阅读(450) 评论(0) 推荐(0)
摘要:1.NSString是OC中用来保存字符串的对象,可以通过在C字符串常量前加上一个@符号来创建一个NSString对象,例如 NSString *strTest=@"my name is xy"; 2.也可以使用NSSring的方法来创建,例如,其中stringWithFormat的用法和NSLog 阅读全文
posted @ 2018-09-09 20:53 土豆吞噬者 阅读(179) 评论(0) 推荐(0)
摘要:1.由于Objective-C是C的超集,所以C支持的基本数据类型,OC也支持,而NSNumber就是对这些基本数据类型的封装,例如char,short,int,float 2.NSNumber可以通过下面两种方法初始化 其他数据类型还有 3.NSNumber不支持加减乘除,如果需要做这些运算,可以 阅读全文
posted @ 2018-09-04 22:58 土豆吞噬者 阅读(314) 评论(0) 推荐(0)
摘要:1.和Java一样,Objective-C中也有自动回收对象的机制ARC,当一个对象没有任何指针指向时,对象就会被释放 2.默认的对象指针都是强引用的,假设现在有两个对象,A和B互相引用,那么着两个对象都没有办法通过ARC机制来释放 3.可以通过弱引用来解决上面遇到的问题,下面的代码中,如果现在有A 阅读全文
posted @ 2018-09-03 23:56 土豆吞噬者 阅读(110) 评论(0) 推荐(0)
摘要:1.Objective-C是C的超集,所以C能使用的代码,Objective-C也能使用 2.Objective-C代码使用.m文件而不是.c/.cpp 3.Objective-C导入头文件使用#import "xxx.h"或者import <xxx.h>,#import指令会自动检查之前是否已经导 阅读全文
posted @ 2018-09-02 17:40 土豆吞噬者 阅读(109) 评论(0) 推荐(0)