objective-c(六)文件分離,合成存取方法,方法多參數,局部變量,self使用

    今天我們開始學習objective-c面向對象的第二個基礎部分,類的一些基本操作,上篇中演示的程序,主函數以及調用的類接口以及實現部分都在同一個文件中,假如類多了之後這絕對不是一個好的解決辦法,這篇我們就來說說如何分離:

我建瞭如圖一個文件,當前顯示的編輯窗口是主函數窗口,現在我們去建專門放類的文件,點擊菜單欄的file,進去點new,選擇file就進入下面這個界面:

選擇objective-c class文件,然後next進入下面這個界面

在這個界面填入類名以及父類名,默認NSObject類,因爲這是祖宗類,然後next,就進入把新創建的文件放在哪個文件夾下,在group中選擇即可,然後文件夾目錄就自動多了兩個文件

我們看到生成一個後綴爲.h一個爲.m的文件,分別打開,我們就會看到接口部分放在.h文件中,實現部分放在.m文件裏,這樣就分離類成功了,後面的例子中我們會用到。

如果有過java開發的就應該用到過eclipse吧,多麼強大的一個開發工具啊,還記得裏面的getset方法可以自動生成嗎?那是多麼方便啊,xcode其實也很強大,我們也可以合成getset的方法,下面我就一步步講一下:

例如,我們要爲test類添加a屬性和b屬性,a屬性的getset方法自動生成,b還用原來的方法,然後大家可以看到效果:

interface部分:

#import <Foundation/Foundation.h>

@interface Test : NSObject
@property int a;
@end

 

implemention部分

#import "Test.h"

@implementation Test
{
    int b;
}
@synthesize a;

@end

 

main部分

#import <Foundation/Foundation.h>
#import "Test.h"

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        Test *test = [[Test alloc] init];
        [test setA:5];
        NSLog(@"%i",[test a]);
        [test setB:4];
    }
    return 0;
}

看到結果如圖:

總結一下,

    (1)要在其他地方調用一個類需要import進去,所以main前面有這麼一句#import "Test.h",引入自己的類是雙引號,引入系統的類是<>

    (2)a可以自動合成getset方法步驟1在interface部分:@property int a;2在implemention部分@synthesize a;,然後我們在主函數裏面調用getset方法時,相應的方法就會自動提示出來了,b還是原來的方法,我強制使用setB就報了上面的錯

 

會了getset方法自動合成,我們就開始學習多參數方法,前面用的方法要麼是沒有參數的,要麼是隻有一個參數,這次我們寫個方法實現一次爲a和b都賦值

在interface中

#import <Foundation/Foundation.h>

@interface Test : NSObject
@property int a;
-(void) setTo:(int) a over:(int) b;
-(void) setB:(int) x;
-(int) b;
@end

implementin部分

#import "Test.h"

@implementation Test
{
    int b;
}
@synthesize a;

-(void) setB:(int)x{
    b = x;
}
-(int) b{
    return b;
}
-(void) setTo:(int)x over:(int)z{
    a = x;
    b = z;
}
@end

main部分

#import <Foundation/Foundation.h>
#import "Test.h"

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        Test *test = [[Test alloc] init];
        [test setTo:3 over:4];
        NSLog(@"%i and %i",[test a],[test b]);
    }
    return 0;
}

這種大家一看就清楚了吧

上午本來計劃寫來,把未完成都去掉了,有點事耽擱了,對不住大家了,

我來說說局部變量,局部變量是c語言的基本數據類型,所以使用之前必須得賦值,這個我就不細說了,有編程經驗到人都會用

我在這主要說的是static的使用,大家一定會疑惑static和局部變量有什麼關係,因爲java中的static都是成員變量,這就是objective-c的不同,objective-c中static可以定義在單個方法中也可以定義在全局中,用途是不同的,定義在方法中是記錄該方法執行的次數,定義在全局中是記錄該類執行的次數,下面用代碼解釋一下。

定義在方法中:


看到了把,我們調用a方法三次,count值自動增加

下面我們看看定義全局static


以上就是全局static的使用方法


其實objective-c也提供了java中this的使用方法只不過不叫this,叫self,寫過php面向對象的人就知道這,因爲php中也是self,用法和javathis一樣在,在此不再詳述

 


 

 

 

發佈了36 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章