方法調用
OC語言中采用特定的語言調用類或者實例(對象)的方法稱為發送消息或方法調用。
// 方法調用格式:[對象 方法名];
[Person1 shopping];
// 調用帶參數的方法
[Person2 goshopping:200.0];
set、get 方法
set、get 方法用來訪問和修改對象的屬性值。
- set 方法是對某一個屬性賦值。
- get 方法是獲取某一個屬性的值。
//1.定義設置器方法
//年齡的設置器方法:給對象的年齡設置的
-(void)setAge:(NSInteger)age;
-(void)setName:(NSString *)name;
-(void)setWeight:(float)weight;
//2.定義多個參數的設置器方法
//方法名:setName:setAge:setweight:
-(void)setAge:(NSInteger)age setName:(NSString *)name setWeight:(float)weight;
//3.定義訪問器方法
//訪問器方法:用于訪問對象的屬性值
//OC里的命名規范:get方法名不需要加get前綴
-(NSInteger)age;
-(NSString *)name;
調用
在類的外部如:main.m 文件中想要給對象設置屬性,要通過調用相應的設置器方法:
// 格式:[對象 方法名]
// set 方法
[Person setAge:34];
[Person setName:@"張三"];
[Person setWeight:80];<br />
// get 方法
// 用age變量接收調用的方法返回值
NSInteger age = [Person age ];
NSLog(@"person的年齡:%ld",age);
NSString *name = [Person name];
NSLog(@"person的名字:%@",name);
// 點語法
//點語法只能調用 set 和 get 方法
Person.age = 34; //等效于 [Person setAge:34];
NSInteger age = Person.age; //等效于 NSInteger age = [Person age ];
- 字符串
OC中字符串都是以@
開頭的,比如@"Hello"
是OC中的字符串。 - 控制臺打印
C語言中使用printf("Hello")
打印字符串, OC中使用NSLog函數打印字符串:NSLog(@"Hello")
; - 把一個對象使用
%@
打印,實際上是調用了此對象的description
方法,然后取的此方法的返回值打印。
NSLog(@"%@",book);
//與下面的方法等價
NSString *desc = [book description];
NSLog(@"%@",desc);
初始化方法
- 對象必須先創建,然后初始化,才能使用。如:
NSObject *object = [[NSObject alloc] init];
; - OC中的對象通過指針來聲明。如:
Person *p
; - 初始化方法,是創建對象
alloc
之后調用,并且只能調用一次; - 方法名必須以
init
開頭; - 返回值類型是
id
類型;
//自定義初始化方法,將姓名傳入
- (id)initWithName:(NSString *)name;
//多個參數的初始化方法的定義
- (id)initWithName:(NSString *)name WithAge:(NSInteger)age;
自定義初始化方法的實現
在 init
方法中,若要父類完成所需的一次性初始化,需要調用 [super init]
方法,init
方法返回的值,描述了被初始化的對象。
將 [super init]
的結果賦給 self
是Objective-C的標準慣例,這么做是為了防止父類在初始化過程中返回的對象不同于原先創建的對象。
- (id)initWithName:(NSString *)name{
//使用super可以調用父類中定義的方法
self = [super init];
if (self) {
//賦值
_name = name;
}
return self;
}
調用初始化方法
Person *p1 = [[Person alloc] init];
Person *p2 = [[Person alloc] initWithName:@"jack"];
Person *p3 = [[Person alloc] initWithName:@"Tom" WithAge:22];
initWithCString:
:C 語言的字符串轉換成 Objective-C 的字符串:
NSString *outputValue = [[NSString alloc] initWithCString:inputValue encoding:NSUTF8StringEncoding];