文档章节

OC语言的代码保护

 泊竹
发布于 2014/05/09 10:10
字数 346
阅读 153
收藏 2
点赞 0
评论 0

1、向容器加对象

      主要指NSMutableArray、NSMutabledictionary。向这两个容器添加nil,会引起崩溃。所以在传入前,需要对传入的内容进行非错判断。

//错误示范
NSString *addString = nil;
NSMutableArray *mArray = [NSMutableArray array];
[mArray addObject:addString];

//建议写法
NSString *addString = nil;
NSMutableArray *mArray = [NSMutableArray array];
if (addString != nil) {

  [mArray addObject:addString];
  
}else {

  NSLog(@"xx类xx方法试图向数组mArray传入一个nil");
  
}

2、从容器取数据

     主要指NSArray、NSMutableArray。从array里取数据,要注意防止下标数组越界。

//错误示范
NSArray *array = @[@"a", @"b", @"c"];
int index = 5
NSString *testString = array[index];

//建议写法
NSArray *array = @[@"a", @"b", @"c"];
int index = 5

if (index < array.count) {

   NSString *testString = array[index];

}else {

   NSLog(@"xx类xx方法试图从数组mArray取一个超出count的对象");
}

3、调用其他类的方法或不知道要调用的方法当前SDK版本是否支持。需要先判断一下这个方法是否存在。

//错误示范
[self.delegate 要调用的方法];
    
//建议写法
if ([self.delegate respondsToSelector:@selector(要调用的方法)]) {
        
        [self.delegate 要调用的方法];
}

4、定义delegate属性的时候,一定要设置为weak。

//错误示范
@property (nonatomic, assign)  id <DetailViewDelegate> delegate;

//建议写法
@property (nonatomic, weak)  id <DetailViewDelegate> delegate;






© 著作权归作者所有

共有 人打赏支持
粉丝 90
博文 67
码字总数 13285
作品 0
徐汇
Object-C基础-01-概述

回到顶部 前言 目前来说,Objective-C(简称OC)是iOS开发的核心语言,在开发过程中也会配合着使用C语言、C++,OC主要负责UI界面,C语言、C++可用于图形处理。近来,流传Ruby、C#也可以开发iOS...

Corwien ⋅ 2016/03/16 ⋅ 0

一、Objective-C概述

说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序员,能够快速上手Objective-C。如果你还没有编程经验,或者对Objective-C、iOS开发不感兴趣,请忽略...

长平狐 ⋅ 2013/03/28 ⋅ 0

OC语言的特性(一)-消息传递与调用函数的表现形式

我们在初学Objective-C时,都会觉得ObjC中的消息传递和其他语言的调用函数差不多,只是在OC中,方法调用用消息传递这一概念来代替。 那么到底怎样区别OC中的消息传递与其他语言的调用函数呢。...

浩浩老师 ⋅ 2015/09/08 ⋅ 0

Swift 和 OC 方法互调--SwiftAndOC

SwiftAndOC 是一个Swift 和 OC 方法互调Demo。 Demo功能: 1.在OC项目里: 1.1.OC代码调用Swift方法 1.2.Swift代码调用OC代码。 2.在Swift项目: 2.1.Swift代码调用OC代码 2.2.OC代码调用Swift...

匿名 ⋅ 2016/08/05 ⋅ 0

@synchronized 指令

@synchronized 指令可以方便的在oc代码中创建互斥锁。这个指令和其他的互斥锁做的一样,防止同一时间不同的线程获取同一个互斥锁。在这种情况下,你不必创建互斥或锁对象,相反,你只需要使用...

petsatan ⋅ 2016/05/26 ⋅ 0

从现在,开始swift

导语 苹果在2014的WWDC中推出了Swift 这一全新的编程语言,一时之间成为各大网站的头条和所有程序员的讨论热点,与可读性较差的Objective-C相比,这门融合了多种编程语言优点的语言得到了各大...

芳仔小脚丫 ⋅ 2014/10/15 ⋅ 4

对于Objective-C运行时,我的一些理解

运行时到底是什么,我也不是特别的明白,我说不清完整的定义,所以只能说说自己对于OC运行时的简单理解了。我们在点击Xcode的Run按钮的时候,其实内部发生了很多的事情,也就是编译的过程,简...

召唤攻城狮 ⋅ 2014/04/08 ⋅ 1

Swift的一些翻译1:Swift Playgrounds

第二章 Swift Playgrounds 去做,玩的开心,享受游戏 -Michael Jordan 在WDC2014,苹果宣布所有的iOS设备都将开始使用一个新的编程语言叫做Swift.Swift被称作"快速,现代,安全,可交互的"编程语言...

zetan ⋅ 2015/12/03 ⋅ 0

Native code support (Native Code(C和C++)支持)

1. WP 8和Win 8之间共享native代码 通过 Windows 运行时组件,可以在 Windows 应用商店和 Windows Phone 应用程序之间共享Native coad。由于windows phone 8和Windows 8没有共享所有的Windo...

失足处男的倒霉孩子 ⋅ 2013/12/26 ⋅ 0

关于OC语言基础的总结

1.OC的动态性 oc的动态性让程序可以在运行时判断其该有的行为,而不是像c等静态语言一样在编译构建时就确定下来。它的动态性主要体现在一下三个方面: 1。动态类型。 如id类型。实际上静态类...

Megan_zhou ⋅ 2013/08/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Cloud构建微服务架构服务注册与发现

Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、...

明理萝 ⋅ 28分钟前 ⋅ 0

占位slot

一、为什么我们需要slot 假如我们有个需要,子组件中需要显示一段html内容,显示什么不是由子组件决定,而是由父组件传递什么决定,我们该怎么做 很挫的做法,我们使用组件间的数据传递 父组...

金于虎 ⋅ 28分钟前 ⋅ 0

Linux集群 NTP 时间同步

基于CentOS 7 规划 比如有2台机器 IP 主机名 说明 192.168.103.51 cdh51 本地NTP服务端 192.168.103.52 cdh52 本地NTP客户端 安装NTP服务 每台机器都安装ntp yum -y install ntp NTP服务端(...

囚兔 ⋅ 31分钟前 ⋅ 0

国际版链克口袋 获取方法

1 月16日,网心科技玩客云团队在官网发布了停止链克口袋转帐服务的通知。通知中表示迅雷将于1月25日在AppStore和官网,正式发布链克口袋新版本,新版本不支持迅雷及迅雷合作伙伴开发的应用场...

xiaogg ⋅ 32分钟前 ⋅ 0

Raft中Batching和pipelining到底是什么?

Raft supports batching and pipelining of log entries, and both are important for best performance. Many of the costs of request processing are amortized when multiple requests a......

黑客画家 ⋅ 33分钟前 ⋅ 0

Mybatis-Plus 之BaseMapper 方法详解

/** * Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能 * 这个 Mapper 支持 id 泛型 * @author hubin * @Date 2016-01-23 */public interface BaseMapper<T> ...

干干 ⋅ 33分钟前 ⋅ 0

JVM笔记9-Class类文件结构

摘要: 1.Class类文件结构   Class 文件是一组以 8 位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在 Class 文件之中,中间没有添加任何分隔符,这使得整个 Class 文件中...

传授知识的天使 ⋅ 37分钟前 ⋅ 0

MySQL数据库之sleep线程过长如何处理?

  什么是sleep线程?   sleep线程长时间保持可客户端与服务端的连接状态   导致sleep过多的原因:   使用太多持久连接(高并发系统中 不适合使用持久连接)   程序中 没有及时关闭MyS...

老男孩Linux培训 ⋅ 37分钟前 ⋅ 0

转发和重定向的区别

转发在服务器端完成的;重定向是在客户端完成的 转发的速度快;重定向速度慢 转发的是同一次请求;重定向是两次不同请求 转发不会执行转发后的代码;重定向会执行重定向之后的代码 转发地址栏...

冯莉莉莉莉 ⋅ 38分钟前 ⋅ 0

go语言实现http proxy的关键一步

go语言自带包ReverseProxy 实现了proxy的功能。 但我希望proxy进程能够在代理的同时,完整的把请求和请求体记录在日志里。 仅使用ReverseProxy 包的话,uri记录没问题,但body只能被读取一次...

xuanzilie ⋅ 43分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部