Objective-C小知识收集
来源:互联网 发布:淘宝开店2张不同银行卡 编辑:程序博客网 时间:2024/06/14 05:44
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或NSDictionary
plist文件的子路径只能是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小知识收集
- Objective-C的知识小拓展
- Oracle小知识收集
- Objective-C入门知识
- objective-c 知识整理
- Objective-C入门知识
- Objective-C知识汇总
- 收集小知识 持续更新...
- linux 小知识闲暇收集
- Java collections小知识收集
- 【Objective-C Runtime】Objective-C Runtime文章收集
- C语言 小知识!~
- C 小知识整理
- c语言 小知识
- C/C++小知识
- c++/java小知识
- 求助 c小知识
- C语言小知识
- 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATI
- 堆、栈
- 中文知识图谱研讨会的学习总结 (上) 图谱引入、百度知心、搜狗知立方
- 随机模拟与采样方法
- VirtualBOX安装Mac OS X 10.7正式版
- Objective-C小知识收集
- jQuery基础——样式篇
- NYOJ 1427 速算24点(搜索&&全排列)
- LA 3902
- iOS之UITextField对输入的内容的长度限制和内容限制
- ASP.NET MVC---自定义HtmlHelper方法
- hdu2389+二分匹配(Hopcroft-Karp算法)
- DevExprss的时间控件DateEdit取值时间转换方法
- JS读取本地文件及目录的方法