标签:
Object-C 是C的衍生语言,继承了所有C语言的特性,但是Object-C并不是继承自C语言特性本身。
#import <Foundation/Foundation.h> @interface Print: NSObject{ //Objective-c的所有类都继承于NSObject // 成员属性 NSString * caption; NSString * photographer; } //在Objective-C 2.0引入了属性合成,相当于之前的get/set方法 @property(nonatomic, copy) NSString * caption; @property(nonatomic, copy) NSString * photographer; //类方法 +(NSString *)printSize: (NSString *)size; //实例方法 -(NSString *)printName; -(NSString *)printName: (NSString *)name; -(BOOL)print: (NSString *)size setLength: (int)length; @end
上面代码展示了如何在Object-C声明一个类,其中也涉及到了少许继承:
Object-C声明一个类以@interface 开始,以@end 结束;
Print 为所声明的类,继承自NSObject 类;
//无参实例方法 -(NSString *)printName; //有参实例方法 -(NSString *)printName: (NSString *)name; //多参实例方法 -(BOOL)print: (NSString *)size setLength: (int)length;
相当于Java中的:
public static String printSize(String name){ } public String printName(){ } public String printName(String name){ } public Boolean print(String name, int length){ }
首先要把以前学习面向对象语言的惯性思维抛去,在Objective-C里面没有public和private的概念,你可以认为全是public;它只有类方法和实例方法,加号表示类方法,类方法可以直接调用,而不用创建这个类的实例;减号表示实例方法,需要创建这个类的实例对象才可以调用。
(void)和(BOOL)分别为返回值的类型;
那么BOOL是不是跟Java语言中的Boolean值一样呢,不是的:
BOOL使用8位存储,YES定义为1,NO定义为0,大于1不为YES,跟标准C不同。
若不小心将一个长于1字节的整型值赋给BOOL,则只截取低八位
Obejective-C中1不等于1,绝对不要将BOOL值和YES比较
引用转载自:www.cnblogs.com/moonvan
/archive/2011/10/13/2210498.html
#import <Foundation/Foundation.h> //使用@implementation开始和@end结束实现类的内容 @implementation Print @synthesize caption; @synthesize photographer; +(NSString *)printSize: (NSString *)size{ ...... } -(NSString *)printName: (NSString *)name{ ...... } @end
之后,就是如何调用的问题了:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]){ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; //实例化类的对象 Print * pt = [[Print alloc]init]; //方法的使用 NSString * a = [self printSize: @"20"]; NSString * b = [pt printName]; NSString * c = [pt printName: @"Yi_Yuan_n"]; BOOL d = [pt printName: @"Yi_Yuan_n" setlength: 175]; //属性的使用 //设置器的调用 [pt setCaption: @"haha"]; [pt setPhotographer: @"hehe"]; //获取器的调用 NSString * haha = [pt getCaption]; NSString * hehe = [pt getPhotographer]; //输出 NSLog(@"%@", haha); NSLog(@"%@", hehe); [pt release]; [pool drain]; return 0; }
标签:
原文地址:http://my.oschina.net/u/2478158/blog/513238