Object-C学习笔记之基础知识一
发布时间
阅读量:
阅读量
Object-C基于C语言发展而来,并具备全部C语言特性;然而它并非直接继承自C语言特有的属性。
首先我们先通过例子来说明Object-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*) printName: (NSString *)name;
//实例方法
- (NSString*) printSize: (NSString *)size;
//无参实例方法
-(NSString*) printSize;
//多参实例方法
-(BOOL) print: (NSString *)size setlength: (int)length;
@end
上面代码展示了如何在Object-C声明一个类,其中也涉及到了少许继承:
Object-C声明一个类以@interface 开始,以@end 结束;
Print 为所声明的类,继承自NSObject 类;
//类方法
+ (NSString*) printName: (NSString *)name{
}
//实例方法
- (NSString*) printSize: (NSString *)size{
}
//无参实例方法
-(NSString*) printSize;
//多参实例方法
-(BOOL) print: (NSString *)size setlength: (int)length{
}
相当于Java中的:
public static String printName(String name){
}
public String printSize(String size){
}
public String printSize(){
}
public Boolean print(String size,int length){
}
首先必须摒弃以前学习面向对象语言时形成的固有思维,在Objective-C语言中并不存在public和private关键字的概念——所有的访问权限都是public属性;它仅包含静态方法与动态方法两类别——加号表示静态方法(静态函数),这些函数可以直接被调用而无需先创建对应对象;减号代表动态方法(动态函数),这类函数只能在创建了对应对象之后才能被调用。
在处理返回值类型方面需要注意以下几点——(void)与(BOOL)分别代表不同的返回类型;那么问题来了——请问 BOOL 类型与Java语言中的 Boolean 类型是否一致呢?答案是否定的:
- 首先 BOOL 在内存占用上有所不同——它采用的是8位存储机制——其中YES被赋值为二进制码中的1(即十进制数值为1),NO则被赋值为二进制码中的0(即十进制数值为0)——如果误将超出8位范围的数据赋给 BOOL 类型变量,则会自动截断高位部分;
- 另外需要注意的一点是——在Objective-C编程中存在一个潜在的逻辑错误——即不应该将布尔型变量与布尔常量YES直接进行比较运算;
引用转载自:www.cnblogs.com/moonvan
/archive/2011/10/13/2210498.html
//使用@implementation开始和@end结束实现类的内容
@implementation Print
@synthesize photographer;
@synthesize caption;
//方法实现
+(NSString *)printName{
return @"Print Result";
}
-(NSString *)printSize
//......用法差不多
@end
之后,就是如何调用的问题了:
int main(int argc, const char * argv[]){
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
//实例化类的对象
Print * pt = [[Print alloc]init]
//方法的使用
NSString * a = [self printName:@"名字"];
NSString * b = [pt printSize:@"尺码"];
NSString * c = [pt printSize];
BOOL d =[pt print:@"名字" setlength:10];
//属性的使用
//设置器调用
[pt setCaption:@"haha"];
[pt setPhotographer:@"hehe"];
//获取器调用
NSString * haha = [pt getCaption];
NSString * hehe = [pt getPhotographer];
//输出
NSLog(@"%@", haha);
NSLog(@"%@", hehe);
[pt release];
[pool drain];
return 0;
}
全部评论 (0)
还没有任何评论哟~
