`

Objective-c 学习: 初始化

阅读更多

版权所有,欢迎转载,转载请注明 : SinFrancis  http://mdev.cc 

 

 

nil     类似于C中的NULL, 但nil是Object, 可以发送消息给nil
如:
[nil message]

BOOL 也是通过类库实现的, 分别是YES和NO

#import   类似了  #include ,但不会存在重复包含的问题

在普通的双引号字符串前放置一个@符号,就成了一个 NSString对象

方法名字前面的单个减号(-)表明该方法是一个实例方法。如果方法名字前面是一个加号(+),则表明该方法是一个类(static)方法。
这个概念在C++中也是有的.


Objective-C中的类可以分为两种类型的方法:  实例方法(instance methods)和类方法(class methods).   实例方法就是一个在类的一个具体实例的范围内执行的方法。也就是说,在你调用一个实例方法前,你必须首先创建类的一个实例。而类方法,不需要你创建一个实例。

 

 

以下是自己在学习Objective-c的时候所涉及的代码:
 
类的定义:

 

 

 

#import <Cocoa/Cocoa.h>


@interface StringUtils : NSObject {

}
//默认的初始化方法
- (id) init;
//指定的初始化方法,比如NSString自带的有 initWidthFormat这个初始化方法
- (id) initWithString:(NSString*) string; 
- (NSArray*) split:(int) a;

@end

 

 

 

类的实现:

 

 

 

//
//  StringUtils.m
//  string
//
//  Created by sin francis on 10-7-12.
//  Copyright 2010 __MyCompanyName__. All rights reserved.
//

#import "StringUtils.h"


@implementation StringUtils


- (id) init
{
	
	if(self = [super init]){
		NSLog(@"init method");	
	}

	return (self);
}

- (id) initWithString :(NSString *) string
{


	if(self =  [super init]){
	
		NSLog(string);
	}
	return (self);
	
}

- (NSArray*) split:(int) a
{
	
	NSLog(@"aaaaaaaaa");
	return @"ssss";
	
	
		
}
@end

 

 

开始调用:

 

 

 

#import <Foundation/Foundation.h>
#import "StringUtils.h"
int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

	
	//StringUtils* s= [[StringUtils new];
	//一开始使用的方法,生成对象,现在我们使用alloc的方式生成对象
	
	
	StringUtils* s= [[StringUtils alloc] init];
	[s split: 1];
	

	
	StringUtils* s1= [[StringUtils alloc] initWithString :@"this is the init string"];

	
	
	
    // insert code here...
    NSLog(@"Hello, World!");
    [pool drain];
    return 0;
}

 

分享到:
评论
10 楼 zysuper 2010-09-20  
init 是实例方法,不是类方法。
9 楼 shitoupai 2010-09-16  
StringUtils的内存是不是应该释放一下?
8 楼 sinfrancis 2010-09-16  
ph4nut 写道
@lz
*你的代码有点乱
*你的初始化方法有点不对头,初始化应该是类方法



代碼是有點亂,這個代碼只是為了說明初始化工作而已。

我想你說的類方法應該是靜態方法吧,是否就是相對於Java中的static方法,(不知道是否可以這樣理解,如果有誤,請指正)。

但是我查閱了很多資料沒有哪個文獻是說要把初始化方法(構造方法)作為靜態方法使用的,比如《Objective-c基礎教程》(人民郵電出版社)中143-149頁,就沒有這個說法。

如果你找到了相關資料,希望能告知鄙人。
7 楼 ph4nut 2010-09-15  
@lz
*你的代码有点乱
*你的初始化方法有点不对头,初始化应该是类方法
6 楼 wufuhu 2010-08-26  
学习中,希望能搞定
5 楼 sinfrancis 2010-08-09  
王山而 写道
咨询一下,我没有苹果本,应该如何学习iphone开发
虚拟机的MAC系统找不到,而且说是有风险

verycd上面有虚拟机的mac 系统,不过如果硬件配置不行会非常慢的,虚拟机没风险
4 楼 王山而 2010-08-08  
咨询一下,我没有苹果本,应该如何学习iphone开发
虚拟机的MAC系统找不到,而且说是有风险
3 楼 sinfrancis 2010-07-14  
王山而 写道
转战iphone了?

最近事多,大部分的终端平台都要涉及。
2 楼 xupf1977 2010-07-13  
我也在学Object C,刚开始看的时候一头雾水。慢慢就发现它的优点所在了
1 楼 王山而 2010-07-12  
转战iphone了?

相关推荐

Global site tag (gtag.js) - Google Analytics