IOS基礎之OC:OC對象方法
一個類的三要素:類名、屬性、行為(方法)
代碼裡面寫的方法,其實就是對某一個類進行行為的描述
方法的定義:
-(void)方法名;
方法的實作:
-(void)方法名{
方法體;
}
方法它本質上就是函數,方法很多的用法跟函數一樣
函數分為無參無傳回值的函數、有參無傳回值的函數、有參有傳回值的函數、無參有傳回值的函數,方法也分這幾種
1.無參無傳回值的函數:
void 函數名();
方法的: -(void)方法名;
使用方法:
函數用法:
函數名();
方法用法:
[對象名 方法名];
注意:1.方法的聲明隻能寫在@interface和@end之間(不包括大括号裡面)
2.方法的實作隻能寫在@implementation和@end之間
-----------------執行個體代碼-----------------
#import <Foundation/Foundation.h>
-----方法的聲明-----
@interface Person : NSObject{
@public //不加public外面調用不了
NSString *_name;
int _age;
}
-(void)run;
@end
-----方法的實作-----
@implementation Person
-(void)run{
NSLog(@“你好,小明");
}
@end
-----主函數-----
int main(int argc, const char * argv[]) {
@autoreleasepool {
//調用方法之前一定要new一個對象
Person *p = [Person new];
[p run];//對象名 方法名
}
return 0;
}
2一個參數的情況:
定義的文法:
-(void)方法名:(參數類型)參數名;
實作的文法:
-(void)方法名:(參數類型)參數名{
方法體;
}
調用的文法:
[對象名 方法名:實參值];
注意:如果有參數的話,冒号也屬于方法名
兩個參數的情況:
定義的文法:
-(void)方法名:(參數類型)參數名 :(參數類型)參數名2;
注意:1、有空格!
2、為了增強方法的可讀性,一般在後面的參數裡面,還會寫一些方法的名(必須加)
例: -(void)方法名1:(參數類型)參數名 方法名2:(參數類型)參數名2;
實作的文法:
-(void)方法名:(參數類型)參數名 :(參數類型)參數名2{
方法體;
}
調用:
[對象名 方法:參數1 :參數2];
N個參數的情況:
-(void)方法名:(參數類型)參數名1 方法名2:(參數類型)參數名2 方法名3:(參數類型)參數名3 方法名n:(參數類型)參數名n;
注意:方法名是包含冒号的!
-----------------執行個體代碼-----------------
#import <Foundation/Foundation.h>
-----方法的聲明-----
@interface Person : NSObject{
NSString *_name;
int age;
}
// 方法名:watchMovie:andFood:
-(void)watchMovie:(NSString *)movie andFood:(NSString *)food;
//方法名是eat: 形參名是:food
-(void)eat:(NSString *)food;
@end
-----方法的實作-----
@implementation Person
//方法的實作
-(void)watchMovie:(NSString *)movie andFood:(NSString *)food{
NSLog(@"看《%@》,吃着%@",movie,food);
}
-(void)eat:(NSString *)food{
NSLog(@"吃%@",food);
}
@end
-----主函數-----
int main(int argc, const char * argv[]) {
@autoreleasepool {
//new一個對象
Person *p = [Person new];
// NSString *food = @"漢堡包";
//
// [p eat:food]; //傳遞變量
[p eat:@"漢堡包"]; //可以直接給值
[p watchMovie:@"恐怖片" andFood:@"炸雞啤酒" ];
}
return 0;
}
3有傳回值方法的定義文法:
-(傳回值類型)方法名:參數清單;
例: -(int)sayAge;
實作:
-(傳回值類型)方法名:參數清單{
方法體;
return 值;
}
-(int)sayAge{
return 16;
}
方法的傳回值跟函數一樣,你可以接收,也可以不接收,反正它都會執行
-----------------執行個體代碼-----------------
#import <Foundation/Foundation.h>
-----方法的聲明-----
@interface Person : NSObject{
@public
NSString *_name;
int _age;
}
-(int)sayAge;
@end
-----方法的實作-----
@implementation Person
-(int)sayAge{
return 16;
}
@end
-----主函數-----
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *p = [Person new];//先要有對象
//再通過對象來調用方法
// int age = [p sayAge];
//
// NSLog(@"%d",age);
NSLog(@"%d",[p sayAge]);
}
return 0;
}