这段时间体验和学习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. Spring Framework------>version4.3.5----->Reference学习心得----->总结

    1.Spring Framework概述: 有很多可用版本,网址http://projects.spring.io/spring-framework/       2.Spring Framework ...

  2. laravel(一):如何安装laravel

    1.前提条件 本文针对想从零开始开发 Laravel 程序的初学者,不需要预先具备任何的 Laravel 使用经验.不过,为了能顺利阅读,还是需要事先安装好一些软件: PHP 5.4 及以上版本 包管 ...

  3. 第四十章 微服务CICD(2)- jenkins(war版)

    一.下载 官网下载war包,放在tomcat下的webapps下, 第一章 tomcat安装与启动 第二章 部署war包到tomcat jenkins:2.19.1版本. 二.修改编码为utf-8 在 ...

  4. tomcat 配置ssi

    tomcat想要使用html文件引入html文件的功能可以开启ssi,这样就可以在html文件中使用include指令,从而使得html文件可以动态加载html文件了. 开启ssi步骤如下: 1.ap ...

  5. Miller_Rabin素数测试

    #include<iostream> #include<cmath> #include<cstdio> #include<cstring> #inclu ...

  6. 實際案例: 已知要獲取臨時票証 (JsApi Ticket) 才能調用的接口

    需獲取票証才能調用的接口,簡單列示如下: 一.基礎類 1. wx.checkJsApi (當前客戶端是否支持指定JS) 二.分享類 1.wx.onMenuShareTimeline (分享到朋友圈)2 ...

  7. 各大门户网站的css初始化代码

    腾讯QQ官网 css样式初始 body,ol,ul,h1,h2,h3,h4,h5,h6,p,th,td,dl,dd,form,fieldset,legend,input,textarea,select ...

  8. 下拉tableView实现类似微信中带图的灰色背景

    UIView *topView = [[UIView alloc]initWithFrame:CGRectMake(, -, ScreenWidth, )]; UIImageView *iconIma ...

  9. JavaSE基础知识总结

    最近回顾了一下Java的基础知识,决定写成博客梳理一遍,主要是JavaSE部分最基础的知识,适合考前突击,学后回顾,不适合作为初学材料. 简单的列个目录吧: 一.数据类型和运算符 二.流程控制与数组 ...

  10. U盘启动盘 安装双系统 详细教程

    U盘启动盘 安装win7+linux双系统 最近在看鸟哥的linux 私房菜 ,看到多重系统那部分,自然的安装多重系统的激情由此而燃.在网上看了很多资料,感觉都不全.经过艰辛的摸索,终于被我发现了一个 ...