Objective-C小知识收集
2016-05-17 11:08
423 查看
1.instancetype和id的区别
(1)相同点
都可以作为方法的返回类型(2)不同点
①返回类型instancetype可以返回和方法所在类相同类型的对象;
id只能返回未知类型对象.
②instancetype只能作为返回值,不能像id那样作为参数
//例 - (void)setValue:(instancetype)value; //错 - (void)setValue:(id)value; //对
2.类方法(+)和对象方法(-)
(1)类方法(+):
通过类名调用,类方法中不能访问类中实例变量.(2)对象方法(-):
通过对象调用,对象方法可以直接访问类中实例变量3.声明@property时的属性修饰符
(1)nonatomic/atomic
多线程的控制,基本用nonatomic多(2)assign
用于修饰基本类型变量,非OC对象(3)retain
用于修饰NSString外的OC对象(4)copy
用于修饰NSString对象4.Category的使用
(1)基本语法@interface 类名(category名)
(2)作用
在不改变原有类的基础上,给这个类增加新的方法
(3)优先级
category中的方法优先级高于类中方法
(4)易错点
不可以声明新的成员变量
5.对象的初始化
(1)alloc
alloc是从NSObject继承来的类方法,用于给对象分配存储空间.所有的成员变量在此时都确定了自己的内存位置,并被赋初值整数类型为0, 浮点数为0.0, BOOL为NO, 对象类型为nil
alloc方法返回对象的指针
(2)init
init是从NSObject继承来的成员方法.这个方法是在对象创建过程可以参与的方法.因此可以自定义init方法.Objective-C对init方法没有特殊的要求.一般init方法都返回当前类型的指针或者id类型,id类型在Objective-C中是泛型对象,可以表示任意类型的OC对象.6.description方法
- (NSString *)description;
用于输出对象的首地址(不重写的话);
由于这是NSObject的成员方法,因此不必声明,可以直接实现.
7.动态判定和选择器(NSObject方法)
//1.用于判断对象是否是aClass类型的实例,但不包含子类的实例 - (BOOL)isMemberOfClass:(Class)aClass; //2.用于判断对象是否是aClass类型的实例或者aClass的子类的实例 - (BOOL)isKindOfClass:(Class)aClass; //3.用于判断类或者对象是否能够响应某个方法,这个方法用选择器表示 - (BOOL)respondsToSelector:(SEL)aSelector; //4.用于动态调用类或者对象方法 - (id)performSelector:(SEL)aSelector; - (id)performSelector:(SEL)aSelector withObject:(id)object; - (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2; //5.用于判断类型所产生的实例是否能够回应某个方法,这个方法,使用选择器表示. + (BOOL)instancesRespondToSelector:(SEL)aSelector;
8.单例模式
(1)类方法使用方法名一般以shared/default/current开头
(2)程序举例:
①SingleClass.h
#import <Foundation/Foundation.h> @interface SingleClass : NSObject @property (nonatomic,copy) NSString *name; + (instancetype)sharedSingleClass; @end
②SingleClass.m
#import "SingleClass.h" //用于创建一个全局静态对象指针 static SingleClass *single = nil; @implementation SingleClass + (instancetype)sharedSingleClass { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ single = [[SingleClass alloc] init]; }); return single; } @end
9.Plist文件
(1)plist文件的根路径是NSArray或NSDictionaryplist文件的子路径只能是NSString,NSNumber,NSData,NSArray和NADictioanry
(2)plist读写
//写 - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile; //读 + (nullable NSArray<ObjectType> *)arrayWithContentsOfFile:(NSString *)path; + (nullable NSDictionary<KeyType, ObjectType> *)dictionaryWithContentsOfFile:(NSString *)path;
相关文章推荐
- Objective-C中Delegate,Protocol与Interface的区别
- objc_setAssociatedObject通过alert传值
- iOS SDK开发时,有关OC和C++混编造成其它类错误的问题(Compile Sources As Objective-C++)
- 解决div被embed,object覆盖问题
- Objective-C的入门学习笔记
- Objective-C 内存管理——你需要知道的一切
- 编写高质量的Objective-C代码
- Objective-C 的正则表达式库 RegexKitLite
- 上古时代 Objective-C 中哈希表的实现
- AT5 two-dimensional objects - the torus and genus
- OOD - Object Oriented Design 面向对象设计实例
- 自定义规则,对List<Map<String,Object>> List<Object>进行排序
- [ObjectC]Runtime运行时之三:方法与消息
- [ObjectC]Runtime 运行时之一:类与对象
- jQuery基础教程-第8章-002Adding jQuery object methods
- 'URLWithString' is unavailable: use object construction 'NSURL(string:)
- Objective-C Runtime Programming Guide 中文翻译
- 如何解决Selenium中"Cannot find function addEventListener in object [object HTMLDocument]"的错误
- objective-c - 基础篇 - 关闭键盘的两种方式
- Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法