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