iOS開發系列---Objective-C之基礎知識


一、Objective-C語言概述

Objective-C是一種面向對象的計算機語言,Brad J Cox 在20世紀80年代設計了Objective-C,該語言是基於SmallTalk-80。1988年NeXT發布了Objective-C,它的開發環境和類庫叫"NEXTSTEP",1994年NeXT與Sun發布了標准的NEXTSTEP系統,取名"OPENSTEP",軟件自由基金會OPENSTEP版本叫做GNUStep。 1996年蘋果公司開始支持NeXT,把NEXTSTEP/OPENSTEP用於Mac OS X操作系統開發,它的版本和開發環境叫做Cocoa,使用Objective-C作為基礎語言,開發工具是Xcode和Interface Builder。2007年蘋果公司推出Objective-C 2.0,Objective-C是Mac OS X和iOS開發的基礎語言。

二、第一個Objective-C程序

打開Xcode,創建一個新項目,選擇命令行程序;
選擇程序語言為Ojbective-C並輸入項目名稱;

默認生成一個項目結構;
程序源代碼:
//  main.m
// helloworld
//
// Created by yangjun on 16/11/24.
// Copyright © 2016年 yangjun. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
}
return 0;
}
上面是通過Xcode創建的第一個Objective-C程序,這是一個經典的“ Hello,World!”。運行結果如下:

下面對上面的代碼做一下簡單解釋:

  1. 首先#import是一個導入命令,類似於C語言的#include命令,但是相對於#include而言,#import有效的處理了重復導入的問題,在C語言中也提到過如何通過條件編譯解決重復導入,而在Objective-C中你不需要處理了,#import已經自動進行了重復處理;與#include類似,導入系統類庫使用<>,導入自定義類庫使用””; 
  2. Foundation.h是Foundation框架中的頭文件,這是Objective-C中的一個基礎類庫,基本上后面我們用到的所有Objective-C的代碼都需要引入這個類庫; 
  3. @autoreleasepool是Objective-C的關鍵字,它的作用是對包含在這個關鍵字后面大包括內的程序會自動進行內存回收,不需要開發人員手動釋放無用的對象;當然表面上看起來這有點類似於C#和Java的內存垃圾回收機制,但是事實上他們的原理完全不同,以后再做具體解釋。 
  4. NSLog是標准輸出函數,類似於C語言中的printf()函數,但是它會自動換行,當然它同樣支持格式輸出(例如%i表示輸出整形數據,%f輸出浮點型數據),這個函數在Fundation.h中聲明; 
  5. @”Hello,World!”,是一個字符串常量,在Objective-C中字符串前需要使用@符號;

擴展--Objective-C語法特點

  • Objective-C中沒有命名空間(C#)或包(Java)的概念,那也就是說在同一個應用中不能同時存在兩個完全相同的類名,通常情況下我們通過前綴加以區分,例如在Objective-C中的NSString、NSLog中的NS就是前綴。 

NS其實是NeXTSTEP縮寫,是喬布斯離開蘋果后在NeXT公司所開發的系統,這個操作系統在當時雖然沒有獲得廣泛認同,但是卻為后面Mac OX奠定了基礎。

  • Objective-C中很多關鍵字都是以@開頭(例如@autoreleasepool、@interface、@protocol),另外需要注意的是為了區分C語言中的字符串,Objective-C中的字符串也必須加上@。

三、基本數據類型

在Objective-C 編程語言中,基本數據類型除了C語言中的char、int、float、double之外還有:

  1. BOOL類型,包含兩個值YES和NO,其實Objective-C中的布爾類型就是整數1和0; 
  2. id類型,是一個對象類型,可以表示所有對象; 
  3. NSString是Fundation框架中定義的字符串類型;
//  main.m
// helloworld
//
// Created by yangjun on 16/11/25.
// Copyright © 2016年 yangjun. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
@autoreleasepool {
char a='a';
int b=1;
float c=8.5;
double d=8.5e+12;
char e='a';
BOOL f=YES,g=NO;
NSLog(@"a=%c,b=%i,c=%f,d=%f,e=%c,f=%i,g=%i",a,b,c,d,e,f,g);
//結果:a=a,b=1,c=8.500000,d=8500000000000.000000,e=a,f=1,g=0

NSString *str=@"Hello,World!";
NSLog(@"str=%@",str); //結果:str=Hello,World!

NSLog(@"object=%p",nil);//結果:object=0x0
}
return 0;
}
下面是常用格式符:

格式符

說明

%i

以十進制形式輸出整數,注意%hi輸出短整形,%li長整形

%u

輸出無符號整形(unsigned int)

%o

以不帶符號八進制輸出整數

%x

以不帶符號十六進制輸出整數

%c

輸出一個字符

%f

以小數形式輸出單精度、雙精度浮點數,%lf長雙精度類型

%@

輸出一個字符串

%p

輸出一個對象類型


本文轉自:http://www.cnblogs.com/kenshincui/p/3861300.html









注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: