当前位置:  编程技术>移动开发
本页文章导读:
    ▪Object-C学习(2)        Object-C学习(二) 引用:http://blog.csdn.net/huanglx1984/article/details/4293113上次说了Objective C是一种挺好的面向对象的语言。那么我们今天就来看看Objective C中的一些面向对象的特性吧。 构造函数.........
    ▪ 资料 日期格式        文件 日期格式     private String timeString( long time ){           //方式1 按系统的日期方式         //  Calendar   cal = Calendar.getInstance();          //  cal.setTimeInMillis( time );          //  return .........
    ▪ Objective-c 宣言私有方法       Objective-c 声明私有方法 @interface Controller : NSObject{ NSString *something;} + (void)thisIsAStaticMethod;- (void)thisIsAnInstanceMethod; @end//声明私有的方法@interface Controller (Private) - (void)thisIsAPrivateMethod; @end ......

[1]Object-C学习(2)
    来源: 互联网  发布时间: 2014-02-18
Object-C学习(二)
引用:http://blog.csdn.net/huanglx1984/article/details/4293113


上次说了Objective C是一种挺好的面向对象的语言。那么我们今天就来看看Objective C中的一些面向对象的特性吧。



构造函数 (constructor)

其实我觉得在Objective C中,这个名字并不算很恰当,可能叫做“初始化函数”比较合适一些吧。

因为这个函数其实就是一个普通的函数,和C++与Java中对构造函数的特殊待遇不同。

举个例子:




@interface Sample : NSObject {

    int a;


}

- (Sample*) initWithIntValue: (int)aa;

- (void) setA : (int) aa;

- (void) print;


@end




@implementation Sample

- (Sample*) initWithIntValue: (int)aa {

     if( self = [super init] ) {

         [self setA: aa];


     }

     return self;


}

// setA 和 print 的实现参见上一篇


@end



其实,initWithIntValue 就是所谓的“构造函数”。我们在使用的时候,还是需要先调用父类NSObject中的alloc方法(注:alloc方法是一个static的方法,它是被“+”修饰的, 参见上篇关于函数声明的介绍):

Sample* smp = [[Sample alloc] initWithIntValue:1];



对构造函数的几个说明:

1) 返回值一定要是类的指针

2) 一定要先调用父类NSObject的init函数,因为在Objective C中所有的类都是从NSObject继承来的

3) 检查init返回的值是否有效

4) self : 这是Objective C的一个关键字,概念上和C++与Java中的this 一样




在面向对象程序设计中,大家一定很熟悉访问限制的概念,也就是C++和Java中的public, protected, private,在Objective C中也有类似的东西

#import <Foundation/NSObject.h>
@interface AccessExample: NSObject {
@public
    int publicVar;
@protected
    int protectedVar;
@private
    int privateVar;
}
@end



没错,就是挺简单的。




还记得之前说的Objective C中的静态方法么(static messages)?下面我们来看一个例子:



// ClassA.h

#import <Foundation/NSObject.h>
static int count;

@interface ClassA:NSObject
+ (int) getCount;
+ (void) initialize;
@end



// Implementation
@implementation ClassA
- (id) init {
    self = [super init];
    count++;
    return self;
}
+ (int) getCount {
    return count;
}
+ (void) initialize {
    count = 0;
}
@end



static int count;

在C++中,还记得怎么声明静态变量么?

view plaincopy to clipboardprint?class A { 
public: 
   A(); 
   ~A(); 
protected: 
   static int a; 

static int A::a = 0; 
class A {
public:
   A();
   ~A();
protected:
   static int a;
}
static int A::a = 0;

但是在Objective C中,所谓类的静态变量其实可以理解为一个全局的静态变量,因为它并没有被放在@interface的定义里面。

接下来,getCount 和initialize 是两个静态方法。getCount 用于返回当前对象的个数,而initialize 用于清空对象的计数。

但是在Implementation中,为什么会有init 这个方法呢?

是的,这里可以理解为,我们重载了NSObject 中的init 方法:仅增加了一个功能,就是计数。我们不需要在头文件中声明init ,因为我们继承了NSObject。



如何使用这个类呢:

int main( int argc, char* argv[] ) {
    [ClassA initialize];


    ClassA *c1 = [[ClassA alloc] init];
    ClassA *c2 = [[ClassA alloc] init];    

    printf( "ClassA count: %i/n", [ClassA getCount] );

    ... ... 
}



读者自己试一试实现自己的release方法吧:)

未完待续~~


    
[2] 资料 日期格式
    来源: 互联网  发布时间: 2014-02-18
文件 日期格式

    private String timeString( long time ){

 

        //方式1 按系统的日期方式

        //  Calendar   cal = Calendar.getInstance(); 

        //  cal.setTimeInMillis( time ); 

        //  return cal.getTime().toLocaleString();

 

        //方式2 按自定义格式

          SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");

          Date currentTime = new Date( time );

          return format1.format(currentTime);

        }

 

 

long mytime = file.lastModified();//取得时间

        String timeStr = timeString( mytime );//输出格式

        holder.tv_time.setText(timeStr);


    
[3] Objective-c 宣言私有方法
    来源: 互联网  发布时间: 2014-02-18
Objective-c 声明私有方法
@interface Controller : NSObject
{
NSString *something;
}

+ (void)thisIsAStaticMethod;
- (void)thisIsAnInstanceMethod;

@end
//声明私有的方法
@interface Controller (Private)

- (void)thisIsAPrivateMethod;

@end

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
sqlserver iis7站长之家
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3