一、类 |
在ios中,类的声明和实现时分离的,也就是说不能写在同一个文件中,声明放在 .h文件中,实现放在 .m 文件中。在实现文件中引入 .h文件,#import "xxx.h"
声明一个类:
#import <Foundation/Foundation.h>
@interface Person : NSObject
@end
实现一个类:
#import "Person.h"
@implementation Person
@end
假如我们在XCode中定义一个Person类,可以选择Cocoa Class或者Cocoa Touch Class。
输入类名(WZKPerson),并选择父类为NSObject。
另外OC和C#对比,没有了命名空间的概念,OC的类为了避免混淆一般通过前缀进行区分,如你看到的IOS基础类库,很多带有NS,UI,CA,等这样的前缀,就是这个原因。
最后将会生成两个文件:
WZKPerson.h文件
WZKPerson.m文件
- .h文件:
通常放类的声明(成员变量、属性、方法声明);
关键字@interface声明一个类,同时以@end结束,类的声明放在这两个关键字中间;
另外WZKPerson类继承自NSObject(OC的基类);
由于WZKPerson类在Foundation框架中定义,所以导入了 Foundation框架中Foundation.h声明文件(<Foundation/Foundation.h>);- .m文件
通常放类的具体实现(方法、属性);
关键字@implementation用于实现这个类,同时以@end结束,这两个关键字中间实现具体的属性、方法;
因为.m文件中使用到了WZKPerson类,所以需要导入WZKPerson.h文件;- 导入系统的头文件一般用<>,而导入自定义的类文件用"";
二、实例成员 |
在ios类中吧变量叫做实例变量,并且默认权限为 protected,在类中只能声明实例变量,必能声明方法。并且不能在 .h文件中声明静态实例变量,只能在 .m声明和使用。
Eg:
#import <Foundation/Foundation.h>
@interface Person : NSObject{
int age ;
NSString* name; //ios中的字符串
//static int dwint; error ,can't
}
@end
四、对象方法 |
#import <Foundation/Foundation.h>
@interface Person : NSObject{
int age ;
NSString* name; //ios中的字符串
}
-(int)getAge;
-(NSString*)getName;
-(void)setAge:(int)_age;
-(void)setName:(NSString*)_name;
-(void)setAge:(int)_age andName:(NSString*)_name;
@end
实现 .m
#import "Person.h"
@implementation Person
static int dwint=20;
-(int)getAge{
return age;
}
-(NSString*)getName{
return name;
}
-(void)setAge:(int)_age{
age=_age;
}
-(void)setName:(NSString*)_name{
name=_name;
}
-(void)setAge:(int)_age andName:(NSString*)_name{
age=_age;
name=_name;
}
+(int)getStatic{
return dwint;
}
@end
六、对象 |
#import <Foundation/Foundation.h>
#import "Circle.h"
#import "Person.h"
int main (int argc, const char * argv[])
{
@autoreleasepool {
NSLog(@"Hello, World!");
NSString* str_name=@"shouqiang_Wei"; // 在这里字符串前面必须加上@
Person* person=[[Person alloc] init]; //这里使用 [类名 函数名] 的形式 所以 init 是一个类方法,并且是一个默认构造,用来初始化对象,
[person setAge:30 andName:str_name];
NSLog(@"age = %d ,name = %@",[person getAge],[person getName]); // %@输出Object 类型
}
return 0;
}
参考:
1. Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象,
http://blog.csdn.net/shouqiangwei/article/details/9966833
2.
object-c 学习第三天(方法和消息)
http://blog.csdn.net/zc55803903/article/details/7837609