吐槽:objective-c反人類

來源:互聯網
上載者:User

標籤:ios   suck   

這幾天把一段邏輯從服務端搬到用戶端,基本上就是把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或許有所改善

吐槽:objective-c反人類

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.