1.OC: Object- C ,面向?qū)ο蟮恼Z言
2、OC和C的區(qū)別
<1> oc是 c的超集 ,oc是在c語言的基礎(chǔ)上做了擴(kuò)展,c語言中的所有語法,在oc中都可以使用,甚至你可以在工程里加入C++ 語言
<2>oc在c基礎(chǔ)上擴(kuò)展了面向?qū)ο蟮奶攸c(diǎn)
<3>oc 是一門運(yùn)行時(shí)語言
<4>oc為我們提供了豐富的類庫
3、 如何學(xué)習(xí)好OC ?
//2.看蘋果的官方文檔(API接口網(wǎng)站)
//3.看博客
//4.自己的錯(cuò)誤總結(jié)
4、 面向?qū)ο缶幊痰暮诵模侯惡蛯?duì)象
面向?qū)ο缶幊痰娜筇卣鳎悍庋b,繼承,多態(tài)
類:具有相同特征和行為(功能)事物的抽象
對(duì)象:就是類的實(shí)例化
5、 創(chuàng)建一個(gè)類:
//1、通過Cocoa touch class 模板,創(chuàng)建類,自動(dòng)生成.h 和 .m文件
//2、在.h 文件中寫類的特征(實(shí)例變量) 和方法的聲明
//3、在.m中寫實(shí)現(xiàn)部分
——*使用類創(chuàng)建對(duì)象*——
//1、開辟內(nèi)存空間
//2、初始化
6、[ ]中括號(hào)調(diào)用方法
//[Person alloc] 給person 這個(gè)類發(fā)送一個(gè)消息alloc(開辟內(nèi)存空間)
//創(chuàng)建對(duì)象person1
//每一個(gè)對(duì)象 isa指針 用來指向它的父類,之所有能夠調(diào)用父類的方法,完全是因?yàn)檫@個(gè) isa? 指針;
7、 初始化 如果初始化沒有賦值這時(shí)默認(rèn)所有的實(shí)例變量都為空;
person1 = [person1 init];
這條語句同時(shí)完成了兩件事:開辟內(nèi)存并初始化;
8、例子:
.h文件:
//@interface 是接口 Person 是類名? ? :繼承自誰 NSObject 是所有Oc類中的基類
//---------------------------Person類的創(chuàng)建對(duì)象的特征---------------------
@interface Person : NSObject
//特征一定要寫在下面那對(duì)大括號(hào)里面
{? ? ? @public? ? //實(shí)例變量對(duì)@public 修飾后的就能在類的外部訪問到這些實(shí)例變量了;
//類的外部指:.h 和.m 之外的其他文件就叫類的外部
//類的內(nèi)部指:.h 和.m 文件之內(nèi)
//NSString 是OC中字符串類
NSString *_name;//姓名NSString 不是基本數(shù)據(jù)類型,所以定義它需要加*
NSInteger? ? _age;//年齡NSInteger 是基本數(shù)據(jù)類型,所以定義變量時(shí)不需要加*號(hào)
NSString *_sex;//性別
// ----------------------------Persson類型創(chuàng)建出對(duì)象所擁有的行為----------
//行為的聲明部分
//用 (減號(hào))(- )號(hào) 修飾的方法屬于對(duì)象方法,這個(gè)方法只能有我們定義這個(gè)類的創(chuàng)建出來對(duì)象來調(diào)用
//用加好(+)修飾的方法屬于類方法,這這方法只能有類來調(diào)用
- (id)init;//重寫inint寫法
- (void)sayHello;//小駝峰命名法
- (void)eat;
//添加一個(gè)帶參數(shù)的方法
//一個(gè)冒號(hào):代表一個(gè)參數(shù)
//寫一個(gè)帶有參數(shù)的方法時(shí)格式<? ? :(數(shù)據(jù)類型)參數(shù)名? >
- (void)talk:(NSString *)content;? ? //隱匿有參數(shù)數(shù)據(jù)類型
- (void)talk:(NSString *)content withSonmeone : (NSString *)name;
@end
————————————————————————
.m文件:
/@implementation 是類的實(shí)現(xiàn)部分
@implementation Person
//id 范類型,返回值可以指向任何類型的對(duì)象? 類似于void *? ;
- (id)init{—————————賦給初始值————————
_name = @"翔哥";
_sex = @"妖";
_age = 18;
//打印self地址
NSLog(@"self地址:%p",self);
//誰調(diào)用這個(gè)方法self 指的就是誰
return self;
————————————————————————————————————
main.m? 文件:
Person *p = [[Person alloc]init];
//調(diào)用sayhello的方法
[p sayHello];
p->_name = @"zhangSan";
p->_age = 18;
p->_sex = @"妖";
[p sayHello];
//調(diào)用吃得方法
[p eat];