这几天把一段逻辑从服务端搬到客户端,基本上就是把js翻译成oc。直接对比,明显感到oc太烂了(仅针对语言本身,iOS应用框架还凑合)
比如下面这行JS代码:
var monthtag = bill_year + "-" + bill_month;
写成OC以后,非常晦涩。当然用NSMutableString能有个append方法,但是恶心程度也差不多:
NSString *monthTag = [NSString stringWithFormat:@"%@-%@", [NSString stringWithFormat:@"%d", billYear], [NSString stringWithFormat:@"%d", billMonth]];
再比如下面这行:
data[tag].total += bill.amount;
更加不忍直视:
NSMutableDictionary *content = [data objectForKey:tag];
float total = [[content objectForKey:@"total"] floatValue];
float amount = [[bill objectForKey:@"amount"] floatValue];
total += amount;
[content setObject:[NSNumber numberWithInt:total] forKey:@"total"];
简单想想,OC难用主要有几个原因:
1、强类型,而且隐式的类型转换不发达,需要程序员自己处理
2、各种API设计不方便。Array还差强人意,处理Dictionary时,十分痛苦。其实每次处理NSString,NSDate,NSCalendar时,编程体验也很差
3、不支持闭包(除了block),所以如果想拆分函数,要么就传参,要么就定义变量暂存;而js的scope chain就非常方便
包括iOS框架,我感觉都还有一些非常差的设计,比如:在iOS8之前,UIAlertViewDelegate需要根据tag来区分多个AlertView,还要通过index来区分按钮点击。到了iOS8,有了UIAlertController才好了一点
说实话我感觉如果不是有苹果罩着,OC应该早就退出历史舞台了。可能苹果自己也意识到这个问题,swift或许有所改善
分享到:
相关推荐
腾讯手机QQ共享WiFi密码引吐槽:新功能已下架.docx
web登录页面
那么B对象只需要有一个信号,当点击按钮的时候,发射信号,通知A上的槽执行功能即可。...A上还得有2个对象:this,还得有一个B的...一个槽负责: A-->B。另一个槽负责: B-->A。顺序如下: A--->B-->A。A的源文件:a.cpp。
- QT部分的代码全部自己手写,重点是信号和槽的使用以及客户端与服务器之间的数据交互方式 - 采用HTTP明文的方式进行数据交互,安全性方面需要改进 三、相关知识学习: - QT部分的知识来自于B站视频...
火箭:火箭-C ++的快速单头信号槽库
要求A界面为主界面先显示,那就得把其他界面对象及功能槽都放到A界面类里面来,其他的2个界面B、C只需要负责发信号来触发功能即可。有3个槽:A-->B 的槽;A类: 有3个对象:this,B对象,C对象。 核心代码在包中给了...
有人认为,在亚平宁山脉北部的某些地区,特别是里米尼-安科纳逆冲系统,罗马涅亚平宁山脉和阿尔塔瓦尔蒂贝纳槽,现在发生大地震的可能性比其他亚平宁地区高。 通过比较北亚平宁山脉Romagna-Marche-Umbria楔的当前...
V-King Pro 3d打印机Roy Berntsen的无杆CoreXY V-Slot 3d打印机在此存储库中,您将找到V-King 3D打印机的打印文件和文档。... 社区链接: : : 这是一段视频,介绍了此设计的基本知识和好处: : 除非在文件或目录中指定...
硬件配置:EC-1040/DM-64T 4U高、上架、带6.4 TFT LCD显示和抽屉式键盘、鼠标 BP-14S 14槽ISA无源底板 ACE-935A 350W工业电源 ROCKY-3702EV PIII级增强ISA驱动、板载100M以太网、VGA接口 CPU卡 配置特点:由于...
06-15 被你疯狂吐槽的那些“反人类”设计,其实精妙无比 | 建员译文.docx
一个留言类型的网站,适合新手。吐槽网站。特别适合新手进行学习。也可以直接使用。
一个快速高效的端口扫描工具,制定IP段扫描端口,还可以对部分路由器读取路由器相关用户信息。支持路由器或服务器型号:XM-3300N- ASUS- D-Link- LevelOne- Netis- Pozitron- TP-LINK支持端口:8080,80,8888,8081...
.net制作吐槽网,含有登录 查看 发布 评论 点赞 等
[高二女生吐槽爸爸:聊天记录只有转账-我多希望你问我开不开心啊]别人爸爸和女儿的聊天记录.docx
它返回带有槽solutions , energies和num_occurences的哈希表。 由于Python Pack基于D-Wave One绝热量子计算机的体系结构,因此最多可使用128个量子位和352个耦合器。 使用quicklisp加载SILVER-SWORD及其教程包:...
https://github.com/frossm/rpncalc RPNCalc 支持无限撤销、三角、基本分数支持、多个保存堆栈、健壮的内存槽等。这是一个单一的可执行 JAR 文件。 虽然您需要安装 Java,但无需安装此程序。 只需下载 JAR 文件,将...
只刷leetcode能进大厂吗 大厂面试题库 近期除了学习之外也准备了一些面试题...吐槽: 整理题目的时候,被有些问题弄到想吐血。 第一类,考察你记忆力的题目,我想文档发明出来不就是为了给大脑空出地儿来想别的问题吗?
介绍了综采工作面贯通、治理大采高工作面顺槽底鼓技术创新和大采高综采工作面在两端头过渡上的新工艺在补连塔煤矿生产过程中的应用,保证了补连塔煤矿的长期安全生产。为类似地质条件的煤矿安全生产提供一些借鉴。
基于PHP的消息果留言板(吐槽版) PHP源码.zip
桩基地基验槽记录--3.doc