Objective-C是基于C語(yǔ)言的.
a. 在C語(yǔ)言的基礎(chǔ)之上新增了面向?qū)ο蟮恼Z(yǔ)法.
b. 將C語(yǔ)言中復(fù)雜的使鹅、繁瑣的語(yǔ)法封裝的更為簡(jiǎn)單.Objective-C程序的源文件的后綴名.m
message消息機(jī)制.
C程序的源文件的后綴名是.cmain函數(shù)仍然是Objective-C程序的入口和出口.
main函數(shù)的參數(shù)可以有 也可以沒(méi)有.
參數(shù)的功能: 在終端單獨(dú)運(yùn)行程序的時(shí)候 可以讓用戶(hù)直接傳入一些數(shù)據(jù)進(jìn)來(lái).
返回值: 代表程序結(jié)束的狀態(tài). 0代表正常結(jié)束. 非0代表非正常結(jié)束
4.#import指令
1). 是以#開(kāi)頭,所以它是1個(gè)預(yù)處理指令.
在預(yù)編譯的時(shí)候執(zhí)行.
2). #import指令是#include指令的增強(qiáng)版.
3). 作用: 將指定的文件的內(nèi)容拷貝到寫(xiě)指令的地方.
4). 增強(qiáng):
使用#import指令包含文件的時(shí)候,無(wú)論這個(gè)文件被#import多少次.
這個(gè)文件最終只會(huì)被包含1次.
#include指令.要想實(shí)現(xiàn)這個(gè)效果,就必須要配合條件編譯指令才可以.
5). 用法
<>
""
5.框架
是蘋(píng)果或者第三方事先將程序員在開(kāi)發(fā)過(guò)程中經(jīng)常要用到的功能寫(xiě)好.
表現(xiàn)成1個(gè)1個(gè)的類(lèi)或者函數(shù).
這些類(lèi)型和函數(shù)的集合我們叫做框架.
有點(diǎn)像C語(yǔ)言的函數(shù)庫(kù).
Foundation: 基礎(chǔ) 提供了OC中最基礎(chǔ)的語(yǔ)法支持. 最基本的功能 輸入 輸出.數(shù)據(jù)類(lèi)型.
AVFoundation: Audio Video
UIKit: 做界面的
CroeLocation: 定位
....
Founation框架: 基礎(chǔ)基本的意思.
提供了OC中最基礎(chǔ)的語(yǔ)法支持
最基本的功能 輸入 輸出.數(shù)據(jù)類(lèi)型.
如果想要在OC中使用某個(gè)框架中的功能,你就得先將這個(gè)框架的頭文件引進(jìn)來(lái).
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Foundation.framework/Versions/C/Headers/Foundation.h
Foundation框架中有很多很多的頭文件.
Foundation.h這個(gè)頭文件中 包含了Foundation框架中的所有的頭文件.
所以,我們只要包含F(xiàn)oundation.h這個(gè)頭文件,就相當(dāng)于包含了Foundation框架中的所有的頭文件.
所以,我們只要包含F(xiàn)oundation.h這個(gè)頭文件,我們就可以使用Foundation框架中的所有的功能.
- 自動(dòng)釋放池.
@autoreleasepool
干啥的? 你不需要了解.
你可以將其刪除. 或者把代碼寫(xiě)在這個(gè)池中.
-
NSLog()函數(shù).
1). 這是Foundation框架中提供的一個(gè)函數(shù).2). 作用: 是printf函數(shù)的增強(qiáng)版.
向控制臺(tái)輸出信息的.3). 語(yǔ)法格式:
NSLog(@"格式控制字符串",變量列表); 最簡(jiǎn)單的用法. NSLog(@"輸出信息");
4). 增強(qiáng)的地方.
a. 輸出的信息.不僅僅是指定的信息,還有別的信息. 2020-03-14 10:06:43.218 Day01-OC基礎(chǔ)語(yǔ)法[723:578343] 大家好,才是真的好! 這句話(huà)的輸出的時(shí)間. 程序的名稱(chēng). 程序的進(jìn)程ID PID Process ID. 1個(gè)正在運(yùn)行的程序就是1個(gè)進(jìn)程. 線(xiàn)程ID. 空格之后,才是真正的輸出內(nèi)容. b. 輸出完信息以后,會(huì)自動(dòng)換行. c. printf函數(shù)可以做的事情,它絕對(duì)可以做. 仍然可以使用printf函數(shù)的占位符來(lái)輸出變量的值. 使用方法是一模一樣的. 還可以輸出OC中新增的數(shù)據(jù)類(lèi)型的變量的值.
5). 注意的地方
a. NSLog函數(shù)的第1個(gè)參數(shù)是1個(gè)字符串,這個(gè)字符串的前面一定要加1個(gè)@前綴. b. 如果你手賤,在后面加了1個(gè)'\n'換行符,那么這個(gè)時(shí)候.自動(dòng)換行就會(huì)失效.
6). NSLog()函數(shù)就是來(lái)替換printf函數(shù)的.
從今天開(kāi)始.就不要再去使用printf了,而是使用NSLog函數(shù).
-
OC中的字符串
1). C語(yǔ)言的字符串的存儲(chǔ)方式.
a. 使用字符數(shù)組. b. 使用字符指針來(lái)存儲(chǔ).
2). OC專(zhuān)門(mén)設(shè)計(jì)了1個(gè)類(lèi)型來(lái)保存字符串?dāng)?shù)據(jù).
NSString 使用NSString的指針變量就可以來(lái)保存OC的字符串. 專(zhuān)門(mén)用來(lái)存儲(chǔ)OC字符串的地址的.
3). OC的字符串常量.
a. OC中的字符串常量必須要使用@符號(hào)作為這個(gè)字符串的前綴. @"jack" OC中的字符串常量 "jack" C語(yǔ)言中的字符串常量. b. NSString指針只能保存OC字符串常量的地址. NSString *str = @"jack"; 這樣是可以的. NSString *str = "rose"; 這樣是不行的. "rose"是1個(gè)C字符串. str指針是1個(gè)NSString指針. 只能保存OC字符串. c. 你必須要區(qū)分C串和OC串. "hack" C串 @"rose" OC串
4). 總結(jié)1下子.
在OC語(yǔ)言中,專(zhuān)門(mén)設(shè)計(jì)了1個(gè)類(lèi)型叫做NSString來(lái)保存字符串. 但是只能保存OC字符串. 字符串常量加1個(gè)@前綴.這樣的字符串我們才叫做OC字符串. NSString *str = @"jack"; 內(nèi)部的原理.不需要了解 .你只需要用就可以了.
5). 注意.
1). NSLog函數(shù)的第1個(gè)參數(shù)是1個(gè)NSStirng類(lèi)型的.所以.我們?cè)诮o的時(shí)候,前面要加1個(gè)@符號(hào)才是NSString 2). 如果要使用NSLog函數(shù)輸出NSString字符串,那么就使用格式控制符 %@
-
NS前綴
NextStep --> cocoa --> NS
- @符號(hào)
1). 將C字符串轉(zhuǎn)換為OC字符串
@"jack"
2). OC在C的基礎(chǔ)之上,新增了一些關(guān)鍵字.新增的這些關(guān)鍵字大部分都是以@符號(hào)開(kāi)頭.
@interface
@implementation
@public
......
-
注釋.
單行注釋
多行注釋.
vvdocumenter
- OC中也可以定義函數(shù).并且定義的方式一模一樣.