object-c基础(本人主页:http://amswf.com )
NSLog(@"hello world!");
NSLog(@"%@",name); //打印字符串
NSLog(@"%c",a); //打印单个字符
NSLog(@"%i",isTrue);//打印布尔值
NSLog(@"%i",i); //打印整形变量
NSLog(@"%f",f); //打印单精度浮点数
NSLog(@"%.2f",f); //打印单精度浮点数,且只保留两位小数
NSLog(@"%e",f); //打印科学技术法
NSLog(@"i=%i,f=%f",i,f);//同时打印两个整数
object-c中变量分成三种:基本数据类型,对象类型,id类型。
- 基本数据类型有:int,float,double,char类型和BOOL(YES NO)。
- 对象类型就是类或协议所声明的指针类型:NSString *str = @"我是字符串";
- id类型可以表示任何类型,一般只是表示对象类型,不表示基本数据类型。
- nil
int a = 2;
NSString *str = @"我是字符串";
定义规则:变量类型在前,变量名在后。
在XCode中选择File->New->File...->Cocoa Touch->Object-c Class->填上类名和继承关系后,XCode就会生成想要的新类。新类会产生两个新文件,一个是.h结尾,一个是.m结尾。
.h文件用来描述类,类的属性和方法
.m文件用来实现.h中定义的属性和方法。
////////////////////Calculator.h////////////////////
#import \
@interface Calculator : NSObject
{
int numerator;//分子
int denominator;//分母
}
-(void)print;
-(void)setNumerator:(int)n ;
-(void)setDenominator:(int)d;
@end
////////////////////Calculator.m////////////////////
#import "Calculator.h"
@implementation Calculator
-(void)print{
NSLog(@"numerator=%i,denominator=%i",numerator,denominator);
}
-(void)setNumerator:(int)n{
numerator = n;
}
-(void)setDenominator:(int)d{
denominator = d;
}
@end
在类的定义中-表示类的实例方法,+表示类方法
int num;
num = 0;
for (int n =0; n <5; n++) {
num += n;
NSLog(@"%i",num);
}
#### 条件语句
if(){
}else if(){
}else{
}
#### switch语句
switch(){
case :
break;
case :
break;
case :
break;
default:
break;
}
在.h文件中用@property定义变量
在.m文件中使用@synthesize指令
//////////////////////Calculator.h/////////////////////
#import \
@interface Calculator : NSObject
{
int numerator;//分子
int denominator;//分母
}
//存取方法
@property int numerator,denominator;
-(void)print;
-(void)setNumerator:(int)n ;
-(void)setDenominator:(int)d;
@end
////////////////////Calculator.m////////////////////
#import "Calculator.h"
@implementation Calculator
@synthesize numerator,denominator;
-(void)print{
NSLog(@"numerator=%i,denominator=%i",numerator,denominator);
}
-(void)setNumerator:(int)n{
numerator = n;
}
-(void)setDenominator:(int)d{
denominator = d;
}
@end
.h中
-(void)setDenominator:(int)d setNumerator:(int)n;
.m中
-(void)setDenominator:(int)d setNumerator:(int)n{
numerator = n;
denominator = d;
}
.h中
-(void)set:(int)d :(int)n;
.m中
-(void)set:(int)d:(int)n{
numerator = n;
denominator = d;
}
调用:
[calc set:1:3];
在函数内部声明的变量为局部变量。
在函数中声明的变量前加上static后,局部变量可以保存多次方法调用所得的值。
@class XYPoint方法可以让编译器不使用import 'XYPoint.h'的情况下把XYPoint当成类来使用
@selector
@try{
}
@catch(NSException *err){
}
分类可以为已有的类添加新的方法,并且可以分散实现
为NSString添加新方法
#import \
@interface NSString (NewString)
-(int)toNumber;
@end
#import "NSString+NewString.h"
@implementation NSString (NewString)
-(int)toNumber{
return 123;
}
@end
协议相当于as中的接口:多个类共享的方法列表
#import \
@protocol ICar
-(void)run;
@end
实现协议
#import \
#import "ICar.h"
@interface Car : NSObject
-(void)run;
@end
Object-c2.0增加两个协议修饰符@optional和@required
#import \
@protocol ICar
-(void)run;
@optional
-(void)start;
@required
-(void)swing;
@end
这个协议里面有两个必须实现的方法run和swing,有一个选择实现的方法start
在Object C的语法中声明后的static静态变量在其他类中是不能通过类名直接访问的,它的作用域只能是在声明的这个.m文件中。 static 属性只能定义在implementation中,而不能定义在interface中,而且写在implementation之外或者方法之中。
#import "Person.h"
static int count;
@implementation Person
@synthesize age;
@synthesize name;
-(void) write{
NSLog(@"姓名:%@ 年龄:%i",name,age);
}
+(void) hello{
count++;
NSLog(@"static = %i",count);
}
@end
静态方法 就是将 "-" 改为 "+" 即可。
+(void) hello; 在interface中定义如上方法签名,而在implementation中实现这个方法。