簡體   English   中英

“使用未聲明的標識符”

[英]“Use of undeclared identifier”

我對Objective C很新。繼續得到這個錯誤

"Use of undeclared identifier"

對於這行代碼:

NSString *textOut1 = textOut.text;

顯然我只是想拉動文本框文本。 我在我的h文件中聲明了以下內容

@property (weak, nonatomic) IBOutlet UITextField *textOut;

所以我無法理解為什么我一直得到那該死的錯誤。 謝謝!

用這個:

NSString *textOut1 = _textOut.text;

檢查我在textOut前面添加的額外下划線

閱讀蘋果文檔頁面中標題為“ 實例變量支持的最多屬性”的段落。

要訪問性能textOut由變量引用的對象的someVariable ,你寫someVariable.textOut 因此,要訪問屬性textOut作為對象的self ,你寫self.textOut 在這種情況下,您省略了所有者 - self

如果您不是(@synthesize)自己合成屬性,那么它將與名稱開頭具有Underscore的實例變量合成。

嘗試:

NSString *textOut1 = _textOut.text;

self.textOut.text就是你所需要的。

屬性基本上類似於Java中的類變量,需要使用公共getter和setter。 所以你不能直接在.m文件中使用它,但需要使用getter和setter。 iOS上的Objective C實際上為您提供了這些方法。 因此,當您在引擎蓋下創建屬性時,您擁有自己執行getter和setter的代碼。

您可以將值設置為:

_textOut = BLAHBLAH

得到它:

[self textOut.text] 

要么
self.textOut.text

甚至_textOut.text (這在技術上是textOut引用的局部變量)

或者在你的情況下,

`NSString *textOut1 = [self textOut.text];`

NSString *textOut1 = self.textOut.text;

NSString *textOut1 = _textOut.text; //這可能是推薦最少的一個。

雖然我相信斯坦福大學的班級表示總是做得更好[self textOut]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM