0

さて、私がポインタを使って作業してから久しぶりです。そして今、私は10年以上.NETコードを書いているので、それらに対処する必要はありませんでした。実際、.NETでは、値型でない場合は明らかに参照型であるか、定義上はポインターであるため、非常に便利です。

したがって、.NETで宣言するstringと、参照型であるため、基になるポインターであることが最も確実です。

string s = "Hello Mike!";

ただし、Objective-Cでは、2つの異なる方法で文字列を宣言できるようです。

NSString* s = "Hello Mike!";
NSString s = "Hello Mike!";

さて、これを正しく理解していれば、最初の宣言は、ポインタである.NETの文字列の基本的な宣言と非常によく似ています。しかし、2番目は正確には何ですか?

私はObjective-Cを掘り下げ始めたばかりなので、ここではベースから大きく外れている可能性があることを覚えておいてください。無知を許してください。

4

2 に答える 2

2

どちらのNSString宣言も実際にはコンパイルされるべきではありません。1つ目は、C文字列ポインタをオブジェクトアドレスであるかのように割り当てるため、互換性のない割り当てであることを示しているはずです。2つ目は、実際にはオブジェクトを宣言できず、オブジェクトへのポインタのみを宣言できることを示しているはずです。正しい構文は次のとおりです。

NSString* s = @"Hello Mike!";

この場合、sは、「HelloMike!」を持つ文字列オブジェクトのアドレスを含むポインタ変数です。価値。

于 2012-11-26T02:12:21.410 に答える
1

REALbasicからObjective-Cへの移行は私にとって似ていました。どちらもオブジェクトインスタンスへの参照としてポインターを使用しますが、REALbasicではその事実は暗黙的ですが、Objective-CはCであるため、明示的にする必要があります。しかし、その事実は実際には単なる記法の偶然です。割り当てや比較などの影響は似ています。

このトピックに関する私の本からの関連するエントリを読むことによってあなたは助けられるかもしれません:

http://www.apeth.com/iOSBook/ch03.html#_an_instance_reference_is_a_pointer

(NSStringリテラルを作成する方法をまだ理解していないようです(アットマークで始まります。たとえば@"hello"、セカンダリです)。

于 2012-11-26T02:20:40.423 に答える