1.objc跟c的區別與聯絡
首先 objc是乙個物件導向的語言(封裝、繼承、多型)
objc相當於c的乙個超集 即objc允許使用任何c語言** 但增加了許多c沒有的特點 bigger easier
2.objc中的類與物件
類由介面( xx.h
@inte***ce)和實現(xx.m @implementation)兩部分構成
xx.h中宣告類中的例項變數和功能
xx.m中實現.h中的功能
注意:
命名規則 類名首字母大寫 student 方法名首字母小寫(駝峰)-(void)sayhi
- 例項方法
+ 類方法
3.物件的建立和使用
要建立乙個類的物件,即要做3件事:物件的宣告、分配記憶體空間、物件的初始化
宣告:
@inte***ce student : nsobject
方法名:
-(void)setage:(int)age;
-(int)getage;
-(void)sayhi;
實現:
#import "student.h"
@implementation farmer
-(void)setage:(int)age
-(int)getage
-(void)sayhi
呼叫:#import "student.h"
student *s=[[student alloc
]init
]; s.name=@"tt";
[s sayhi];
屬性:@property(non atomic,retain)nsstring *name; //setter getter方法
@synthesize name = _name;
注意:
@property()裡邊的屬性
訪問控制: readwrite
readonly
記憶體管理:assign 基本
retain 物件 copy 實現nscopying
執行緒安全:atomic
nonatomic 非原子性
物件初始化三個方法
指定初始化賦值:
宣告:-(id)initwithname:(nsstring *)name;
-(id)initwithname:(nsstring *)name andage:(int)age and***:(nsstring *)*** andtalent:(nsstring *)talent andmate:(id)mate;
實現:-(id)initwithname:(nsstring *)name
return self;}
-(id)initwithname:(nsstring *)name andage:(int)age and***:(nsstring *)*** andtalent:(nsstring *)talent andmate:(id)mate
return self;}
呼叫:rider
*r=[[
rider
alloc
]initwithname:
@"rider" andage:
25 and***:
@"m" andtalent:
@"hp 30,mp 0,sp 30" andmate:
nil];
注意:
通常以init開頭 返回值為id
乙個類只有乙個指定初始化方法
指定的初始化方法是必須執行的
內部實現會呼叫到父類的初始化方法
便利構造器:
宣告:
-(id)initwithname:(nsstring *)name andage:(int)age and***:(nsstring *)*** andtalent:(nsstring *)talent andmate:(id)mate;
+(id)machinewithname:(nsstring *)name andage:(int)age and***:(nsstring *)*** andtalent:(nsstring *)talent andmate:(id)mate;
實現:-(id)initwithname:(nsstring *)name andage:(int)age and***:(nsstring *)*** andtalent:(nsstring *)talent andmate:(id)mate
return self;}
+(id)machinewithname:(nsstring *)name andage:(int)age and***:(nsstring *)*** andtalent:(nsstring *)talent andmate:(id)mate
呼叫:machine
*mac=[
machine machinewithname:
@"machine" andage:
5 and***:
@"?" andtalent:
@"hp 10,mp 0,pw 100" andmate:
nil];
注意:便利構造器方法以類名開頭
類方法內部不能用例項變數
類方法只能以類(名)來呼叫
單例模式:
宣告:
+(king *)defaultking;
實現:+(king *)defaultking
return k; }
呼叫:king *k=[king defaultking];
k.name=@"king";
k.age=100;
k.***=@"m";
k.talent
=@"ph 10,mp 10";
k.mate=nil;
注意:單例物件的類只能有乙個例項
OC學習筆記之OC類你好
之前,小橋的mac系統是裝在虛擬機器中的,虛擬機器占用資源太大,想裝在實機上,所以這個星期都在搗鼓,終於完工!一 關於類 高階語言中似乎都有類的概念,c 中是從c的結構體而來。類是物件導向語言中的核心部分,物件導向的三大特性在類中都有具體表現!比如在c 類中,有封裝,有繼承,多型性有過載!相信oc中...
OC學習筆記
1 什麼時候用類方法?什麼時候用例項方法?類方法 應該是對整個模型層面的操作,例項方法 是對某單個模型的操作。又如有乙個使用者類,請求附近的使用者,應該寫成類方法,更新當前使用者的資料,應該寫成例項方法。工具類,基本不需要訪問任何成員變數的時候用類方法。主要全域性層面使用,很方便。需要單獨建立某個物...
O C學習筆記,類和物件
通過一段 的編寫和實現來簡單說明oc程式的建立過程。部分筆記結合在 的注釋中。h檔案存放類,函式宣告。import inte ce dog nsobject 凡是以init x開頭的都是建構函式 id init 函式名為init 不帶引數 id initwithid int newid 函式名為 i...