ios开发(四):基本语法 Objects, Classes, and Messaging
2013-11-27 16:23
288 查看
这篇文章记录一下objective c的基本语法。
1) Objects, Classes, and Messaging
id anObject; id 可以表示任意的数据类型。
nil: 表示任意的空对象。
typedef struct objc_object {
Class isa;
} *id;
typedef struct objc_class *Class;
isa是个指针,这个就实现了语法的动态绑定功能。
message: 其实就是一些函数,在objective c中就叫message,
[receiver message]
[myRectangle setOriginX: 30.0 y: 50.0]; //多参数例子
其实objc也支持dot来实现变量的调用,这是一个语法糖。
class
int i = sizeof(Rectangle); 这个看起来很C的语法,在objc中就变成一个操作符号了。
if ( [anObject isMemberOfClass:someClass] )
if ( [anObject isKindOfClass:someClass] )
上面两个的区别是kindof的识别范围更广包括继承关系的class
instance的创建
id myRectangle;
myRectangle = [Rectangle alloc]; alloc就是给class分配内存, 在objc中所有的对象都在heap上。
singlton
static MyClass *MCLSSharedInstance;
@implementation MyClass
+ (MyClass *)sharedInstance
{
// check for existence of shared instance
if (self == [ThisClass class]) {
// Perform initialization here.
...
}
// create if necessary
return MCLSSharedInstance;
}
// implementation continues
1) Objects, Classes, and Messaging
id anObject; id 可以表示任意的数据类型。
nil: 表示任意的空对象。
typedef struct objc_object {
Class isa;
} *id;
typedef struct objc_class *Class;
isa是个指针,这个就实现了语法的动态绑定功能。
message: 其实就是一些函数,在objective c中就叫message,
[receiver message]
[myRectangle setOriginX: 30.0 y: 50.0]; //多参数例子
其实objc也支持dot来实现变量的调用,这是一个语法糖。
class
int i = sizeof(Rectangle); 这个看起来很C的语法,在objc中就变成一个操作符号了。
if ( [anObject isMemberOfClass:someClass] )
if ( [anObject isKindOfClass:someClass] )
上面两个的区别是kindof的识别范围更广包括继承关系的class
instance的创建
id myRectangle;
myRectangle = [Rectangle alloc]; alloc就是给class分配内存, 在objc中所有的对象都在heap上。
singlton
static MyClass *MCLSSharedInstance;
@implementation MyClass
+ (MyClass *)sharedInstance
{
// check for existence of shared instance
if (self == [ThisClass class]) {
// Perform initialization here.
...
}
// create if necessary
return MCLSSharedInstance;
}
// implementation continues
相关文章推荐
- Objective-C语言基础学习日志(四)
- Objective-c之NSString+NSMutableString+NSValue+NSAraay用法汇总
- Objective-C语言基础学习日志(三)
- 利用GetObject("WinMgmts:")获取系统信息
- Objective-C语言学习日志(二)
- WaitForMultipleObject与MsgWaitForMultipleObjects用法
- JSONObject依赖包
- Objective-C中Sqlite3持久层框架
- objective-C运行时编程指南之消息
- objective-C运行时编程指南之运行时交互
- Objective-C运行时编程指南之运行时版本和平台
- Objective-C运行时编程指南之介绍
- MsgWaitForMultipleObjects
- CocoaPods一个Objective-C第三方库的管理利器
- CocoaPods一个Objective-C第三方库的管理利器
- CocoaPods一个Objective-C第三方库的管理利器
- [Xamarin.iOS] 如何引用Objective-c寫的Class Library (转帖)
- 为什么不要 "lock(this)" ? lock object 并是readonly(转载)
- Object C
- Objective-C 和 Core Foundation 对象相互转换的内存管理总结