这里先举一个例子
NSString *str1 = @"str1";
NSString* str2 = @"str2";
这两个编译器都可以通过,都是正确的,那么这个烦人的星号到底需要放在那里?
那就得先说说这个星号 * 存在的意义了
写 * 代表着要访问某一个地址中的数据,或者可以理解为返回值是指针类型的数据,
所以基础变量时不需要加 * 的,就像
int i = 0;
int j = 1;
下面把上面的例子拆开来分析一下:
NSString 代表通知编译器内存中的数据类型
str1 是一个指针既这块内存的地址
*str1 代表取出str这个内存地址中的数据
反之 NSString* 则没有什么实际意义(如果认为是指向NSString类型的指针未免有些强词夺理)
所以大多数人还是喜欢写成
NSString *str = @"str";
这样写才能说得通。
还有一个办法可以通过xcode检测一下
NSString str = @"str";
xcode 会提示错误的,不仿看一看xcode怎么提示的吧 (-: