03.OC物件操作
阿新 • • 發佈:2018-11-01
字串的宣告
在OC中,用
NSString
類宣告的字串時一個物件
- 用
@
建立字串
NSString * str = @"hello string";
- 建立一個格式化的字串
NSString * formatStr = [NSString stringWithFormat:@"name=%s,age=%d","zhangsan",10];
字串輸出
NSLog(@"%@",str);
字串的操作介紹
- 計算字串的長度
NSUInteger len = [str length];
length
方法計算的是個數
結構體作為物件屬性
- 宣告和實現
#import <Foundation/Foundation.h>
typedef struct{
int year;
int month;
int day;
} Date;
@interface User : NSObject
{
@public
NSString * _name;
Date _birthday;
}
- (void) say;
@end
@implementation User
- (void) say{
NSLog(@"name=%@,year=%i,month=%i,day=%i" ,_name,_birthday.year,_birthday.month,_birthday.day);
}
@end
- 呼叫
首先建立物件
User * user = [User new];
我們在對結構體屬性進行賦值時,要注意,不能使用下面的方式
user->_birthday = {1999,1,1};
user->_birthday = {1999,1,1};
這種方式是錯誤的,因為系統在賦值時,無法判斷{1999,1,1}
是陣列還是結構體
對結構體屬性進行賦值,有三種方式
- 強制型別轉換
user->_birthday = (Date ){1999,1,1};
- 先建立一個結構體變數,然後將這個變數賦值給該屬性
Date d ={1999,1,1};
user->_birthday = d;
- 對結構體中的每一個變數分別進行賦值
user->_birthday.year = 1999;
user->_birthday.month = 1;
user->_birthday.day = 1;
將物件作為方法的引數
@interface Gun : NSObject
- (void)shoot;
@end
@implementation Gun
- (void)shoot{
NSLog(@"shoot");
}
@end
@interface Soldider : NSObject
- (void)fire:(Gun *)gun;
@end
@implementation Soldider
- (void)fire:(Gun *)gun{
[gun shoot];
}
@end
//主函式
int main(int argc, const char * argv[]) {
Soldider *s = [Soldider new];
Gun *g = [Gun new];
[s fire:g];
return 0;
}