日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

结构体和类的区别-Objective-C基础

發(fā)布時(shí)間:2023/12/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 结构体和类的区别-Objective-C基础 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1 結(jié)構(gòu)體 與類的相同點(diǎn)
都可以將多個(gè)數(shù)據(jù)封裝為1個(gè)整體

struct Date{
int year;
int month;
int day;
}
@interface Date :NSObject
{
int year;
int month;
int day;
}
@end

2 結(jié)構(gòu)體與類的不同點(diǎn)
1) 結(jié)構(gòu)體只能封裝數(shù)據(jù) 而類不僅可以封裝數(shù)據(jù) 還可以封裝行為。

2) 1結(jié)構(gòu)體變量分配 在棧空間 (如果是1個(gè)局部變量的情況下
而對(duì)象分配在堆空間

沾的特點(diǎn) 空間相對(duì)較小 但是存儲(chǔ)在棧中的數(shù)據(jù)訪問(wèn)的效率更高一些
堆的特點(diǎn) 空間相對(duì)較大, 但是存儲(chǔ)在堆中的數(shù)據(jù)訪問(wèn)的效率相對(duì)要低
存儲(chǔ)在棧中的數(shù)據(jù)訪問(wèn)效率高,存儲(chǔ)在堆中的數(shù)據(jù)訪問(wèn)效率低

3)
賦值
結(jié)構(gòu)體 Student
類 Perosn
Student s1 = {“jack”,19,GenderMale};
Student s2 = s1;

Person *p1 = [Person new];
Person *p2 = p1;

3 .應(yīng)用場(chǎng)景

1) 如果表示的這個(gè)實(shí)體 不僅是由多個(gè)數(shù)據(jù)組成 ,這個(gè)是實(shí)體還有行為 ,不解釋 只能使用類

2) 如果表示的實(shí)體沒(méi)有行為 光有屬性
a。 如果屬性較少 只有幾個(gè) 那么這個(gè)時(shí)候就定義為結(jié)構(gòu)體,分配在沾 提高效率

b 如果屬性較多 不要定義成結(jié)構(gòu)體
因?yàn)檫@樣結(jié)構(gòu)體變量會(huì)在棧中占據(jù)很大1塊空間,反而會(huì)影響效率
定義為類
枚舉類型

main 方法代碼

Author *a1 = [Author new];
[a1 setName:@“xxx斯基”];
[a1 setAge:68];
[a1 setGender:GenderMale];

Book *b1 = [Book new];
[b1 setName:@“鋼鐵是怎么練成的”];
[b1 setPublishDate:(Date){1998,12,12}];
[b1 setPublisherName:@“人民郵電出版社”];
[b1 setAuthor:a1];

Student *s1 = [Student new];
[s1 setName:@“小東”];
[s1 setAge:18];
[s1 setGender:GenderFemale];
[s1 setBook:b1];

typedef enum
{
GenderMale, //男
GenderFemale //女
} Gender;

Person : NSObject
{
NSString *_name;
int _age;
Gender _gender;

}
-(void)setName:(NSString *)name;
-(NSString *)name;
-(void)setGender:(Gender)gender;

-(Gender)gender;
-(void)setAge:(int)age;
-(int)age;

-(void)setName:(NSString *)name
{
_name=name;
}
-(NSString *)name
{return _name;
}
-(void)setGender:(Gender)gender{
_gender=gender;
}

-(Gender)gender{
return _gender;
}
-(void)setAge:(int)age{
_age=age;
}
-(int)age{
return _age;
}

Student : Person
{
NSString *_stuNumber;
Book *_book;

}
-(void)setBook:(Book *)book;
-(Book *)book;

-(void)setStuNumber:(NSString *)stuNumber;
-(NSString *)stuNumber;
-(void)setStuNumber:(NSString *)stuNumber{
_stuNumber = stuNumber;
}
-(NSString *)stuNumber{
return _stuNumber;
}

-(void)setBook:(Book *)book{
_book=book;
}
-(Book *)book{
return _book;
}

typedef struct{
int year;
int month;
int day;
} Date;

Book : NSObject{
NSString *_name;
NSString _publisherName;
Author *_author;
Date _publishDate;
}

-(void)setPublishDate:(Date)publishDate;
-(Date)publishDate;

-(void)setName:(NSString *)name;
-(NSString *)name;

-(void)setPublisherName:(NSString *)publisherName;
-(NSString *)publisherName;
-(void)setAuthor:(Author *)author;
-(Author *)author;

-(void)setPublishDate:(Date)publishDate
{
_publishDate= publishDate;
}
-(Date)publishDate{
return _publishDate;
}
-(void)setName:(NSString *)name{
_name=name;
}
-(NSString *)name{
return _name;
}

-(void)setPublisherName:(NSString *)publisherName{
_pushlisherName = publisherName;
}
-(NSString *)publisherName{
return _publisherName;
}
-(void)setAuthor:(Author *)author{
_author = author;
}
-(Author *)author{
return _author;
}

Author : Person
{

}
-(void) writeBook;

-(void) writeBook{
NSLog(@“一本曠世著作就這么誕生了”);
}

總結(jié)

以上是生活随笔為你收集整理的结构体和类的区别-Objective-C基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。