Objective-c语言特征小探
来源:互联网 发布:旅游路线规划软件 编辑:程序博客网 时间:2024/06/08 16:24
1. Objective-c中类的声明与定义
Objective-c中的类与C++语言的类含义是相同的,都有成员(实例)变量,成员(实例)函数,类函数,类变量,唯一的区别就是其称呼不同,本质是一个东西,类的声明和定义的表现形式也不同。@interface 中定义的实例变量默认情况下都为@protected,可以直接被子类引用,在@implementation和@property定义的实例变量为@private。其中在@interface中定义的@public变量需要用“->”来访问。
//MyClass.h
@interfaceMyClass : NSObject
{
int var;//定义在该接口内的变量,可以在子类中被直接访问,默认为@protected.
}
//带“-”号为成员函数,带“+”号的表示类函数
-(void)method1;//without param
-(void)method2:(int) number; // with one param
-(void)method3:(int)number andName (NSString*) name; //with two param
+(void)method4;//类函数 相当于C++中的public static
@propertyint myProperty; //定义属性 为@private访问
@end
//MyClass.m
#import“MyClass.h”
@implemetationMyClass{
int var1;//声明成员变量,叫实例变量 为@private
NSString* var2;
}
@syntherizemyProperty;
-(void)method1{}
-(void)method2:(int) number{}
-(void)method3:(int)number andName (NSString*) name{ var1 = number; var2 = name;}
+(void)method4{}
@end
2. Objective-c 语言中对象的分配内存与初始化
NSObject可以说是Foundation框架的根类,创建自定义类MyObject并继承NSObject,在用MyObject时需要先对其分配内存alloc和初始化init,其中最值的注意的是,alloc创建该对象并设置所有的实例变量为0,NSObject中提供的init函数仅仅是返回self,可以说只是一个占位符,需要我们重写该函数,以便能够初始化MyObject中的自定义的实例变量(instance variable)。
@implementationMyObject
-(id)init:(void){
self = [super init];
if(self){
//do your initialization
}
return self;
}
@end
MyObject*someObject = [[MyObject alloc] init];
3. Objective-c语言中的函数重载
Objective-c的函数重载比较特殊,只能通过改变参数的个数,或至少改变其中一个参数的名字(该方法我的感觉更像是改的函数名,请自己体会)
(1)它不能通过改变参数类型达到重载的目的,例如:
-(void)method1:(NSInteger) param1{}
-(void)method1:(NSString*) param1{}
不能达到重载的目的,在C++中该方法是完全可行的。
(2)不能通过改变函数的返回值类型达到重载的目的,例如:
-(int)method1:(NSInteger) param1{ returnparam1; }
-(NSString*)method1:(NSString*) param1{ return param1; }
(3)通过改变参数个数达到重载目的,例如:
-(void)method1:(NSInteger) param1{}
-(void)method1:(NSInteger) param andParam2:(NSString*) param2{}
(4)通过改变其中一个参数名达到重载目的,该方法我的感觉是两个函数了,因为第二个参数的名字可以做为函数的一部分了。例如:
-(void)drawCircleWithCenter:(CGPoint) param1 radius:(CGFloat) param2{}
-(void)drawCircleWithCenter:(CGPoint) param1 andRadius:(CGFloat) param2{}
4. Objective-c中的Block
可以像函数一样,向Block传递参数或返回值,Block可以是全局的或局部的,当其定义在函数内部(即局部)时,可以访问该函数范围内的任何变量,其定义形式有点类似于函数指针的定义,Array的排序通常会用到block,详情google下Array的排序部分。示例代码如下:
voidmain(int argc,char* argv[])
{
@autoreleasepool{
int sum = 20;
//函数内部定义的block
int (^addLoop)(int) =^(int num){ //add 0 to num accumulately
int tmp = 0;
//num = sum;在此可以直接访问函数范围内的变量sum
while(num > 0){
tmp += num;
num--;
}
return tmp;
};// end block
sum = addLoop(sum);
NSLog(@”%i”, sum);
}
return 0;
}
辉辉
(FightingBull Studio)
- Objective-c语言特征小探
- Objective-C特点及特征
- Objective-C特点及特征
- Objective-C特点及特征
- Objective-C特点及特征
- Objective-C特点及特征
- Objective-C 三大特征
- 【黑马程序员】Objective-C语言学习笔记之小知识点
- objective-c语言基础教程
- Objective-C语言知识点
- 读懂Objective-c语言
- Objective-C 语言特性
- 简介Objective-C语言
- Objective-C语言特性
- 简介Objective-C语言
- Objective-C语言:数据类型
- Objective-C语言:属性
- Objective-C语言(3)
- daemon函数实现原理
- Google calendar 农历生日提醒生成工具[Excel宏文件]
- 《枚举——C#第八周》
- SaaS安全性:评价SaaS加密方法
- VC中调用exe
- Objective-c语言特征小探
- JAVA第一个窗体小程序
- sqlmap 使用,收藏备用
- Provable APIs(可查的API)
- ubuntu10.04下ruby相关问题
- case where then 的使用
- PYthon 正则表达式指南
- 多台服务器相互无密码访问
- 黑马程序员 网络编程