一鸵膏、概念
二缩麸、代碼
#import <Foundation/Foundation.h>
#pragma mark 類
@interface IPhone : NSObject
{
@public
float _model; // 型號(hào)
int _cpu; // cpu
double _size; // 尺寸
int _color; // 顏色
}
-(void)about;
-(char *)loadMessage;
-(int) signal:(int)number;
- (int)sendMessageWithNumber:(int)number andContent:(char *)content;
// 計(jì)算器
//-(int)sumWithValue1:(int)v1 andValue2:(int)v2;
// 如果你不想每次使用方法 都需要?jiǎng)?chuàng)建對(duì)象存儲(chǔ)空間
// 并且如果該方法中 沒有使用到屬性(成員變量),那么你可以把這個(gè)方法定義為類方法
// 對(duì)象方法 用對(duì)象調(diào)用 類方法用類調(diào)用
//-(int)sumWithValue1:(int)v1 andValue2:(int)v2;
#pragma mark 1.類方法
// 如何定義類方法,類方法的寫法 和 對(duì)象方法一模一樣, 除了前面的-號(hào) 不同以外
// 只需要將對(duì)象方法的 -號(hào) 換成 + , 那么就定義了一個(gè)類方法
+(int)sumWithValue1:(int)v1 andValue2:(int)v2;
+(void)demo;
@end
#pragma mark 實(shí)現(xiàn)
@implementation IPhone
-(void)about
{
NSLog(@"sum = %i",[IPhone sumWithValue1:30 andValue2:30]);
NSLog(@"型號(hào) = %f cpu = %i,尺寸 = %f, 顏色 =%i",_model,_cpu,_size,_color);
// IPhone *p = [IPhone new];
// char *content = [p loadMessage];
// NSLog(@"loadMessage %s",content);
NSLog(@"loadMessage %s",[self loadMessage]);
}
-(char *)loadMessage
{
char *content = "老婆我們家我做主";
return "lyh is cool";
}
-(int) signal:(int)number
{
NSLog(@"打電話 %i",number);
return 1;
}
- (int)sendMessageWithNumber:(int)number andContent:(char *)content
{
NSLog(@"發(fā)短息 %i, 內(nèi)容: %s",number,content);
return 1;
}
//-(int)sumWithValue1:(int)v1 andValue2:(int)v2
/*
注意 :如果聲明的是對(duì)象方法 那么必須實(shí)現(xiàn)對(duì)象方法
如果聲明的是類方法 那么就必須實(shí)現(xiàn)類方法
類方法 和 對(duì)象方法的區(qū)別
0.對(duì)象方法 以 - 開頭
類方法 以 + 開頭
1.對(duì)象方法 必須對(duì)象調(diào)用
類方法 必須用類調(diào)用
2.對(duì)象方法中 可以直接訪問屬性(成員變量)
類方法 不可以 直接訪問屬性(成員變量)
3.類方法的優(yōu)點(diǎn), 調(diào)用類方法的效率會(huì)比 調(diào)用對(duì)象方法高
4.類方法 和 對(duì)象方法可以進(jìn)行相互調(diào)用
4.1 對(duì)象方法中 可以直接調(diào)用類方法
4.2 可以在類方法中 間接 調(diào)用對(duì)象方法 (注意 : 不建議這樣使用)
4.3 類方法可 以直接調(diào)用 其他類方法
4.4 對(duì)象方法 可以直接調(diào)用 對(duì)象方法
類方法的應(yīng)用場景
如果方法中沒有使用到屬性 (成員變量), 那么能用類方法 就用類方法
類方法的執(zhí)行效率 比 對(duì)象方法高
類方法 一般用于定義 工具方法
字符串查找
文件操作
數(shù)據(jù)庫操作
*/
+(int)sumWithValue1:(int)v1 andValue2:(int)v2;
{
// NSLog(@"型號(hào) = %f cpu = %i,尺寸 = %f, 顏色 =%i",_model,_cpu,_size,_color); // instance variable '_color' accessed in class method
IPhone *p = [IPhone new];
[p signal:123]; // 注意 : 在企業(yè)開發(fā)中, 不建議這樣使用
return v1 + v2;
}
+(void)demo
{
[IPhone sumWithValue1:30 andValue2:40];
NSLog(@"demo");
}
@end
#pragma mark main函數(shù)
void text();
int main(int argc, const char * argv[])
{
/*
IPhone *p = [IPhone new];
p->_model = 4;
p->_size = 3.5;
p->_color = 0;
p->_cpu = 1;
[p about];
char *content = [p loadMessage];
NSLog(@"content %s",content);
[p signal:10010];
[p sendMessageWithNumber:10010 andContent:"hehe"];
// int res = [p sumWithValue1:10 andValue2:20];
int res = [IPhone sumWithValue1:20 andValue2:20];
NSLog(@"res = %i",res);
*/
// [IPhone loadMessage];
IPhone *p = [IPhone new];
// int res = [p sumWithValue1:10 andValue2:20]; // No visble @interface for 'IPhone' declares the selector 'sumWithValue1:andValue2:'
[p about];
// [IPhone demo];
return 0;
}
void text()
{
// 1.創(chuàng)建對(duì)象
IPhone *p1 = [IPhone new];
// 2.利用對(duì)象 調(diào)用加法運(yùn)算方法
// int res = [p1 sumWithValue1:10 andValue2:20];
int res = [IPhone sumWithValue1:10 andValue2:20];
NSLog(@"res = %i",res);
}
輸入圖片說明
輸入圖片說明
輸入圖片說明
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者