LHF Objective-C语法(2)类
Fraction.h (分数)
解释:1、#import <Foundation/Foundation.h>导入系统头文件 #import "Other.h" 导入普通头文件
2、类变量定义在接口外,类变量只能本类访问
3、花括号里是实例变量 访问修饰符可以是 @public @protected @private
4、默认是@protected 除了实例变量有访问修饰符,其他(类变量,类方法,成员方法)都没有
5、所以方法都是公有的,所以类变量都是私有的
6、- 为成员方法 + 为类方法
7、大多类方法都是被用来初始化对象的
Fraction.m
1、m方法没有在头文件中声明,也可以调用
2、方法的本地变量(参数,方法中定义的变量)改成缩写了,防止重名。在名称冲突情况下,会隐藏实例变量
1、第5行调用了成员变量denominator(因为是public的) numerator是protected 只能本类,子类访问2、第6行 调用了类方法,也可以用下边方法调用类方法
[[Fraction class] t];
Class clazz = [Fraction class]; [clazz t]; clzaa是指针,没有*
3、第7行 m方法,未在头文件中声明,这里也可以调用,相当私有化了
4、第7行 释放了frac 申请的内存空间
5、属性访问器(@property)
//Person.h头文件================================
#import <Foundation/Foundation.h>
@interface Person :NSObject{//创建类
NSString *name;//属性
int age;//属性
}
-(void) setName:(NSString*) n;//要吧这3个方法用属性访问器替换掉
-(void) setAge:(int) a;
-(NSString*) name;
-(void) print;
@end
//Person.m实现文件================================
@implementation Person
-(void) setName:(NSString*) n{
[ n retain];
[name release];
[name = n];
}
-(void) setAge:(int) a{
age = a;
}
-(NSString*) name{
return name;
}
-(void) print{
NSLog(@"This is a method...");
}
@end
//main.m================================
int main(int argc,const char * argv[]){
Person person ;
person = [[Person alloc] init];
[person setName:@"Tom"];
[person setAge:22];
[person print];
[person release];
}
用属性访问器,简化上边代码
参考地址:http://skyoceanone.blog.51cto.com/3483859/687268
//Person.h头文件================================
#import <Foundation/Foundation.h>
@interface Person :NSObject{//创建类
NSString *name;
int age;//属性
}
@property (retain) NSString* name;//set get方法简化
@property (assign) int age;//set方法简化
-(void) print;
@end
//Person.m实现文件================================
@implementation Person
@synthesize name;
@synthesize age;
-(void) print{
NSLog(@"This is a method...");
}
@end
//main.m================================
int main(int argc,const char * argv[]){
Person person ;
person = [[Person alloc] init];
person.name=@"Tom";
person.age = 22;
[person print];
[person release];
}
@property(属性访问器类型) 实例变量类型 实例变量@property(nonatomic,assign) int numerator;
@property float count; //
@property(nonatomic,assign,getter=isMale) BOOL male;
属性访问器类型
assign / retain / copy 普通赋值/带计数器的赋值/拷贝
readonly /readwrite 只读(不生成getter方法)/ 读写
nonatomic 线程不安全(默认线程安全)
getter/setter 给生成的方法起名
另一个例子: