这段时间体验和学习OC,虽然这么多年基本都在使用C系列语言(C,C++,C#),但是仍然有很多的不习惯.

当然,这些不习惯不代表讨厌或者不好,也许这些就是OC作为Apple开发首选语言而显得特殊的一些原因吧。下面列举一下主要的不习惯:

1. 称调用对象的方法为向对象发送消息。这两者的仔细理解是一致的概念,都是对象1委托对象2做某件事情,至于对象2怎么做,对象1不管。

2. 方括号表达方式,替代了这些年相濡以沫的点和箭头语法。当然APPLE提供了类似的语法来让C系列开发者习惯旧的方式,但是我认为既然进了XCODE,用纯的OC还是看着整体更加清爽一致些,就好像出国到了俄罗斯,还是说纯正的俄语比较好,不然沟通效果会出现很多的潜在的问题。

3. enum关键字必须出现在变量声明部分的类型名称之前,也必须出现在枚举类型强制转化前。这个必须的动作是我多么希望C系列就有的特性,C++语法允许加上enum,但不是强制,大多数人都会选择不加enum。因为以前在产品开发过程中,定义一个枚举的时候,总是在犹豫,签名要加E么,要不然和类名称声明怎么区分,因为在C系列里面,包括C#,枚举被认为是值类型,自己总是下意识的希望在类型定义时候就区分名称(当然,也有一个流派说,类型名称尽量中性,尽量不要带明显的语言特性痕迹,这个流派认为在C++中接口定义前加I,类定义前加C,枚举前加E等是冗余的,该观点认为,一旦改变了类型,变量名需要重新定义,对维护来说不是很方便。我个人的倾向和习惯是:既然是强类型,那么就应该尽量在类定义时候体现出类型的不同,类,接口,枚举或内置类型,明确的带有语言类型信息的变量名,有助于后期维护人员阅读代码并理解代码现在的语言相关信息,如果使用动态类型,那么名称就应该尽量中性。)不过typedef enum起新别名的时候我又犯难了,要不要加E?

4.其余的一些关键字的不同还好,虽说第一眼不习惯,但看着看着还真习惯了。比如@interface,@implement等。

打完手工,下班回家抱娃啦~

Object-C中一些不同于C系列语言表现的特性的更多相关文章

  1. 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结

    为什么说JAVA中要慎重使用继承   这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...

  2. Java面试系列第2篇-Object类中的方法

    Java的Object是所有引用类型的父类,定义的方法按照用途可以分为以下几种: (1)构造函数 (2)hashCode() 和 equals() 函数用来判断对象是否相同 (3)wait().wai ...

  3. Kotlin中变量不同于Java: var 对val(KAD 02)

    原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02) 作者:Antonio Leiva 时间:Nov 28, 201 ...

  4. 重写Object类中的equals方法

    Object是所有类的父亲,这个类有很多方法,我们都可以直接调用,但有些方法并不适合,例如下面的student类 public class Student { //姓名.学号.年纪 private S ...

  5. [Effective JavaScript 笔记]第47条:绝不要在Object.prototype中增加可枚举的属性

    之前的几条都不断地重复着for...in循环,它便利好用,但又容易被原型污染.for...in循环最常见的用法是枚举字典中的元素.这里就是从侧面提出不要在共享的Object.prototype中增加可 ...

  6. 【Java基础之Object类(一)】Java中Object类中的所有方法(toString、equals、hashCode、clone、finalize、wait和notify等)详解(转载)

    java中的hashcode.equals和toString方法都是基类Object的方法. 首先说说toString方法,简单的总结了下API说明就是:返回该对象的字符串表示,信息应该是简明但易于读 ...

  7. Object类中getClass()

    Object类中包含一个方法名叫getClass,利用这个方法就可以获得一个实例的类型类.类型类指的是代表一个类型的类,因为一切皆是对象,类型也不例外,在Java使用类型类来表示一个类型.所有的类型类 ...

  8. Android中的动画具体解释系列【4】——Activity之间切换动画

    前面介绍了Android中的逐帧动画和补间动画,并实现了简单的自己定义动画.这一篇我们来看看怎样将Android中的动画运用到实际开发中的一个场景--Activity之间跳转动画. 一.定义动画资源 ...

  9. Object类中方法详解

    目录 概述 hashCode方法 getClass方法 toString方法 equals方法 clone方法 finalize方法 概述 Object 是类层次结构的根类.每个类都使用 Object ...

随机推荐

  1. mongo管理工具

    启动 D:\Program Files\MongoDB\Server\3.4\bin\mongod.exe --dbpath d:\data\db 还原 D:\Program Files\MongoD ...

  2. WPF自适应窗体实现小结

    WPF自适应窗体实现小结 这几天,因工作需要,要对一个小软件进行UI调整.主要内容就是让其能够实现自适应窗体(包括文字和图标),做成像WIN7下的Media Center一样的UI.自适应窗体,顾名思 ...

  3. Setup Factory 关闭正在运行的程序

    --在全局函数中增加 适用用Setup Factory 9 function FindAndCloseProcessByName(strName)  local tblProcesses = Wind ...

  4. WebLogic 中的基本概念

    完全引用自: WebLogic 中的基本概念 WebLogic 中的基本概念 上周参加了单位组织的WebLogic培训,为了便于自己记忆,培训后,整理梳理了一些WebLogic的资料,会陆续的发出来, ...

  5. hdu 1299 Diophantus of Alexandria (数论)

    Diophantus of Alexandria Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...

  6. Android停止运行问题1_layout布局xml问题

    好好的写了300多行布局文件代码,写完之后运行结果,停止运行了.我当时就奇怪,xml有错误应该会提示啊,我就一个一个的缩小错误的代码范围,先直接换成一个简单的TextView ,运行一下没有错误.再慢 ...

  7. leveldb 学习笔记之VarInt

    在leveldb在查找比较时的key里面保存key长度用的是VarInt,何为VarInt呢,就是变长的整数,每7bit代表一个数,第8bit代表是否还有下一个字节, 1. 比如小于128(一个字节以 ...

  8. POI读取Excel内容格式化

    在用POI读取Excel内容时,经常会遇到数据格式化的问题. 比如:数字12365会变为12365.0;字符串数字123也会变为123.0,甚至会被变为科学计数法.另外日期格式化也是一个头疼的问题.其 ...

  9. Oracle中三种循环(For、While、Loop)

    1.ORACLE中的GOTO用法 DECLARE x number; BEGIN x := 9; <<repeat_loop>> --循环点 x := x - 1; DBMS_ ...

  10. NC 查询公司下所分配的组织,并存放字符串数组中

    private String[] querkFather() { String sql = "select pk_org from org_orgs start with pk_father ...