2013-04-26 78 views
0

我是Objective-C和iOS開發中的新手。我有一個簡單的問題要問:新手:關於一個類中的ios/objective -c變量定義

我在某些iOS類實現文件看到,人們使用的代碼如下圖所示:

@implementation BIDMyController 

- (void)viewDidLoad{...} 

上面的代碼是相當簡單的。但是,有時候,我看到了類實現的代碼如下圖所示:

@implementation BIDMyController{ 
    NSMutableArray *names; 
} 

- (void)viewDidLoad{...} 

唯一的區別是,有添加大括號,其中包括一些變量定義。大括號&這些變量是什麼意思?他們是定義這個類的私有變量的Object-C風格?有人可以向我解釋嗎?

+0

你確定第二個實現是@implementation而不是@interface? – stan0 2013-04-26 13:49:20

回答

0

首先,讓我們解釋一下什麼是實例變量,然後他們爲什麼宣佈對實現文件:

那些被稱爲實例變量(高德),他們都沒有特別私有變量

你可以改變高德表現以下指令方式:

@private 

伊娃將入店僅由宣佈它的類。

@protected 

iVar將被聲明它的類和任何子類訪問。 如果你沒有聲明一個指令,這是默認使用的,並解釋了爲什麼你可能認爲這是一種聲明私有變量的方法。

@public 

這個iVar會從anwyehre訪問。

@package 

訪問任何地方的應用程序或靜態庫。

如果您對某些術語感到困惑,請不要擔心。大多數情況下,不需要編寫指令,因爲@protected是默認的,它工作正常。

因此,一個實例變量的聲明看起來是這樣:

@interface BIDMyController{ 
    @protected 
     NSString *protectedString 
    @public 
     NSString *publicString 
     NSString *piblicString2 //This iVar is public since it's after de @public directive 

} 

我在接口文件中聲明的變量,但正如你指出的那樣,它們可以在實施文件中聲明。唯一的區別是在實現文件中聲明iVars是隱藏私有iVars的一種方式。 More about this here