文档章节

Objective-C小知识收集

Story约定
 Story约定
发布于 2016/08/04 17:36
字数 831
阅读 1
收藏 0

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,
BOOLNO,
对象类型为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;

© 著作权归作者所有

共有 人打赏支持
Story约定
粉丝 0
博文 19
码字总数 18467
作品 0
闵行
iOS工程师
私信 提问
iOS技术面试题

收集了一些iOS技术面试题,试试你能通过吗? iOS知识问题: Difference between shallow copy and deep copy? What is advantage of categories? What is difference between implementing ......

长平狐
2012/08/13
1K
0
这些编程语言程序员工资最高!Java 才第四

在众多行业中,程序员属于高薪职业。无论是在国外还是国内,程序员的薪金水平普遍高于其他行业的工作岗位。 高薪的诱惑和充满挑战性的工作,令程序员一直成为备受欢迎的职业。在今年年初,G...

oschina
2016/07/18
14.5K
67
10 个学习iOS开发的最佳网站

Apple Learning Objective C Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,而在NeXTS...

xiahuawuyu
2012/11/09
0
2
从 C++ 到 Objective-C 的快速指南

简介 当我开始为iOS写代码的时候,我意识到,作为一个C++开发者,我必须花费更多的时间来弄清楚Objective-C中怪异的东西。这就是一个帮助C++专家的快速指南,能够使他们快速的掌握Apple的iOS...

oschina
2014/05/10
10.7K
30
objective-c(四)-基本数据类型以及循环和选择结构

这部分知识,对于没学过编程的人来说得好好去看看,但对于以及有c或者c++还有java等的开发经验的人来说,只需要略略的看看,找到与其他语言的不同即可,这里我就不短话长说了。 其实这部分知...

whybangbang
2012/12/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式事务解决方案框架(LCN)

什么是XA接口 XA是一个分布式事务协议,由Tuxedo提出。XA中大致分为两部分:事务管理器和本地资源管理器。其中本地资源管理器往往由数据库实现,比如Oracle、DB2这些商业数据库都实现了XA接口...

群星纪元
18分钟前
2
0
linux 操作系统 常用命令和软件安装

1.系统时间更新 ntpdate time.windows.com 2.传送文件 rsync -av /home/data/a.dat -e ssh root@192.168.0.100:/home 3.传送文件夹 scp -r /home/data root@192.168.0.100:/home 4.JDK安装 ......

WJtiny
40分钟前
1
0
pg_lightool基于basebackup的单表恢复和块恢复

开源软件pg_lightool,实现了基于wal日志的块恢复。详情参见博客:https://my.oschina.net/lcc1990/blog/1931485。由于wal日志中FPW的不确定性,它不能作为一个数据库恢复的解决方案。目前对...

movead
47分钟前
2
0
对比剖析Swarm Kubernetes Marathon编排引擎

Docker Native Orchestration 基本结构 Docker Engine 1.12 集成了原生的编排引擎,用以替换了之前独立的Docker Swarm项目。Docker原生集群(Swarm)同时包括了(Docker Engine \/ Daemons)...

Linux就该这么学
49分钟前
2
0
Mybatis的结果集处理

此时我们已经可以把整段的SQL语句取出,但还并没有在数据库中去执行,我们可以先来分析一下配置文件中SQL语句执行后的结果集是如何处理的。 Mybatis会将结果集按照映射配置文件中定义的映射规...

算法之名
今天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部