有點愧疚,這幾個月荒廢了探入,也浪費了很多時間狡孔。
接下來是我看的關(guān)于核心語法的一些筆記,可能不全也可能有錯誤蜂嗽,希望大家可以指出來苗膝。
一、點語法
點語法的本質(zhì)是調(diào)用植旧。
例如:
Person *p = [Person new];
賦值
p.age = 10; // 等價于[P setAge:10];調(diào)用setter
取值
int a = p.age;// 等價于[P age];調(diào)用getter
二辱揭、成員變量的作用域
@public 任何地方都能直接訪問
@private 只能在當(dāng)前類的對象方法中直接訪問
@protect 當(dāng)前類和子類的對象方法。雖然被保護病附,但是在內(nèi)存中子類擁有父類中的方法
三问窃、@property和@synthesiz
1.自動生成 _age.
2.自動生成_age的setter和getter聲明
@property int age;//寫上類型和名稱
/*等價于
-(void)setAge:(int)age;
-(int)age;*/
//表示字符串
@property NSString*name; 生成setter 和getter方法的實現(xiàn)
@synthesize age = _age;
還可以連著寫
@synthesize age =_age,name = _name;
注:
一般情況下省略@synthesize,只寫@property
并且會自動生成setter和getter的聲明和實現(xiàn)完沪。
四域庇、萬能指針 id
id 是一種指針嵌戈,一般形式為
id = NSObject*
id d = [Person new]
五、構(gòu)造方法
屬于對象方法听皿,減號開頭熟呛。
new 完整的創(chuàng)建一個可用的對象
① 分配存儲空間 ② 初始化
不再使用new創(chuàng)建對象。改為以下方式
1.調(diào)用+alloc 分配存儲空間
2.調(diào)用-init進行初始化
Person *p = [[Person alloc] init];
六尉姨、重寫構(gòu)造方法
目的:為了讓對象創(chuàng)建出來庵朝,成員變量就會有一些固定的值
*****重寫-init 方法*****
id是為了使任何對象都可以調(diào)用NSObject
-(id)init
{ 一定要調(diào)用回super 的init 方法
初始化父類中聲明的成員變量和其他屬性
if (self = [super init]
{ 如果對象初始化成功,才能進行下面的初始化
_age = 10;//所有成員變量初始化值都是10
}
return self啊送;//返回一個已經(jīng)初始化完畢的對象
}
七、自定義構(gòu)造方法
自定義構(gòu)造方法:
1.一定是對象方法欣孤,一定以減號開頭
2.返回值一定是id類型
3.方法名以initWith開頭
例如
@interface Person:NSObject
@property NSString *name;
@property int *age;
-(id) initWithName:(NSString*)name andAge:(int)age;
@implementation Person
-(id)initWithName:(NSString*)name andAge:(int)age;
{
if(self=[super init])
{ _name=name;
_age=age;
}
return self;
}
int main()
{
Person *p = [[Person alloc] initWithName:@"rose"andAge:30]
return 0馋没;
}
八、類的本質(zhì)
利用Person這個類創(chuàng)建Person類型的對象
Person *p = [[Person alloc] init];
獲取內(nèi)存中的類對象降传,即Person這個類對象
Class c = [p class];
也可以寫成Class c = [Person class];
注:
類本身也是一個對象篷朵,是個class類型的對象,簡稱類對象婆排,
利用class創(chuàng)建Person類對象
利用person創(chuàng)建Person類型的對象
posted @ 2015-04-11