centos php 开源 nginx shell Windows mysql wordpress java 微软 Android linux Firefox Ubuntu 程序员 apache 云计算 google 编程 Python

《iOS應用開發》——2.1節Objective-C編程語言

2.1 Objective-C編程語言
iOS應用開發
Objective-C語言是一種簡潔的、優雅的、對C語言進行了面向對象設計的擴展。嚴格意義上來說,它是C語言的超集。你可以在Objective-C項目中使用任何有效的C語言代碼。這讓我們除了Objective-C和C框架庫以外,還可以使用大量的第三方代碼庫。Objective-C的大多數面向對象的語法都是從Smalltalk借鑒而來。Smalltalk是最早的面向對象語言之一,它設計得很簡單,很容易被實現並且很容易學會。盡管它的歷史很悠久,Smalltalk仍然還是市場上最具創新性的編程語言。很多現代的計算機編程語言僅僅是重新開發了最初在Smalltalk中使用過的技術。Objective-C也從那裏吸收了很多設計:一個高度動態、極富表達力的基本組件,它是所有東西建立的基石。

作為一個動態語言,Objective-C運行時才將方法和參數綁定,而不是在編譯時。你不需要知道對象的類。你可以向任何類發送任何消息。這樣通常就會極大地簡化代碼,但是,如果你給對象發送了一個它無法理解的消息,程序運行時就會崩潰。

幸運的是,Xcode會提醒你一些沒有被聲明的消息。此外,你可以將對象聲明為靜態類型,這樣編譯器會對代碼進行額外的分析並產生警告。Objective-C還是一種具有高度反射能力的語言,它能觀察和修改自身。在運行時,我們能夠檢查任何類,並且能訪問它的方法和變量等。我們可以修改類,通過類別(categories)或者擴展(extension)來加入自己的方法,甚至可以在運行時動態的重定義方法。

最後,Objective-C,尤其是Cocoa和Cococa touch框架,使用了許多設計模式來減少不同部分代碼的耦合性。耦合性越低的代碼越容易修改和維護。修改程序的一部分不會影響代碼其他的任何部分。然而,如果你不熟悉這些設計模式,它們則會讓代碼變得晦澀難懂。

這些設計模式包括我們在程序中使用的模型-視圖-控制器(MVC)框架、用委托代替子類、使用鍵-值編碼(KVC)用於高度動態讀取對象的實例變量、鍵-值觀察(KVO)用於監控對這些變量的任何改變,以及為應用程序提供大量通知的一個程序框架。

當掌握了Objective-C語言後,你就會發現你常常能夠使用比想象中更少的代碼來解決更加復雜的問題,無需像傳統的程序語言那樣使用那麽多的代碼,例如使用C++或者JAVA編程語言。我們能夠更加仔細地定制解決方案來適應要解決的問題,而不是生搬硬套。

在設計Cocoa Touch框架和Xcode的開發工具時蘋果公司都有很好地應用了Objective-C的靈活性。這些工具使得通用的任務變得易於完成,而不需要很多重復的代碼,並且需要時還能在其他情況中使用。

本章後面的內容講述了Objective-C編程語言。但這些並不代表了全部,關於Objective-C就足以寫一整本書。事實上,確實有很多人寫了這樣的書。你有可能想要看這些書。或者閱讀蘋果公司的開發文檔中的Objective-C編程語言。這份指南提供了你可能需要的全部細節。不同的是,本章是“內容精粹”的版本,它為我們起步提供了足夠的知識,並且指出了很多關鍵特征和常見的錯誤。

雖然並不需要之前就具有面向對象編程的開發經驗,但是我還是假設你們對其他類C語言的編程語言有了一個基本的了解(例如C、C++或者Java)。如果下面的例子讓你感到非常困惑,你可能需要在繼續之前溫習一下C語言技能了。如果你可以正確地給出輸出結果1,那麽,就讓我們繼續。

#include <stdio.h>
int main (int argc, const char * argv[]) {
     int total = 0;
     int count = 0;
     for (int y = 0; y < 10; y++) {
          count++;
          total += y;
     }
     printf("Total = %d, Count = %d, Average = %1.1f",
             total,
             count,
             (float)total / (float)count);
     return 0;
}
1正確的答案是“Total = 45,Count = 10,Average = 4.5”。如果你能編譯並且運行這個程序那就更好了。

延伸阅读

    评论