为什么在Objective-C中将指针*用作字符串而不是整数

公路跑者

我首先学习了Swift,也许这应该是在学习Obj-C之后,所以现在我尝试完全了解Obj-C,以下问题出了点麻烦:

Obj-C变量

NSInteger score = 556;
NSString *name = @"matt";

在Swift中,变量都是一样的

var score = 556
var name = "matt"

为什么Objective-c使用字符串*尽管不使用整数*为什么会有这样的不同?它与运行时间有关吗?

你能用实际例子向我解释吗?谢谢

苏珊

如果您了解Swift中值类型和引用类型之间的区别,那么在Objective-C中使用指针只是表示引用类型。

在分配期间,将复制以下任一

// swift
var score = 10
// obj-c
NSInteger score = 10;

引用被复制,或者换句话说,我们不是在分配值本身,而是指向指针

// swift
class MyObject {}

var object = MyObject();

// obj-c
@interface MyObject: NSObject
@end

MyObject *object = [[MyObject alloc] init];

还要注意,在Objective-C字符串(NSString)中,数组(NSArray)和类似的都是引用类型。即使是数值类型(NSInteger)的数字类型也具有引用类型包装器(例如NSNumber),因为否则您不能将它们放入数组中。null数值具有相应的引用类型NSNull

当然,即使使用值类型,也可以使用指针:

NSInteger score = 10;
NSInteger *scorePointer = &score; // assign pointer to score
*scorePointer = 20; // change value of score through the pointer

NSLog(@"%@", @(score)); // 20

同样,您也可以具有指向其他指针的指针,这在许多情况下很有用(例如inout方法参数)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么Objective-C中的字符串指针接受并返回字符串的值而不是内存地址?

来自分类Dev

为什么在C中用双引号而不是花括号声明指针时将指针用作字符串?

来自分类Dev

为什么可以在C中将字符串分配给字符指针,而不能将整数值分配给整数指针

来自分类Dev

为什么在Objective-C中将变量和方法作为字符串传递?

来自分类Dev

为什么port是字符串而不是整数?

来自分类Dev

为什么打印字符指针会产生字符串而不是内存地址?

来自分类Dev

为什么我在 C# 和 C++ 中得到一个整数而不是字符串?

来自分类Dev

为什么字符串不是值?

来自分类Dev

为什么在C ++中将字符串引用成员变量设置为空字符串?

来自分类Dev

为什么可以将字符串指针初始化为字符串文字,而不是数组?

来自分类Dev

为什么字符串文字不是字符串?

来自分类Dev

为什么clang将字符串文字作为指针而不是数组?

来自分类Dev

为什么此文件名参数是char指针而不是字符串?

来自分类Dev

为什么在我的BST遍历中显示指针而不是字符串?

来自分类Dev

C分割字符串函数在字符串末尾返回\ 377而不是\ 0。为什么?

来自分类Dev

为什么Objective-C数组参数不使用冒号?

来自分类Dev

为什么Objective-C异常不友好?

来自分类Dev

为什么这个Objective-C ++程序不能编译?

来自分类Dev

Objective-C为什么需要__NSGlobalBlock__

来自分类Dev

为什么CGBitmapInfo删除了Objective-C中的kCGBitmapByteOrderDefault?

来自分类Dev

Objective C故事板为什么ParentViewController为零

来自分类Dev

为什么for循环中的迭代器是字符串而不是整数?

来自分类Dev

为什么MVC 5使用字符串而不是整数作为用户的主键?

来自分类Dev

为什么最好将电话号码存储为字符串而不是整数?

来自分类Dev

为什么SUM(`column`)返回一个字符串而不是整数?

来自分类Dev

为什么我的JavaScript程序没有将其转换为整数而不是字符串?

来自分类Dev

为什么在C中打印字符而不在字符串时使用星号作为指针?

来自分类Dev

在Go中使用指向字符串而不是字符串的指针有什么好处

来自分类Dev

为什么不能重新分配字符串数组,但是字符串指针可以使用C语言?

Related 相关文章

  1. 1

    为什么Objective-C中的字符串指针接受并返回字符串的值而不是内存地址?

  2. 2

    为什么在C中用双引号而不是花括号声明指针时将指针用作字符串?

  3. 3

    为什么可以在C中将字符串分配给字符指针,而不能将整数值分配给整数指针

  4. 4

    为什么在Objective-C中将变量和方法作为字符串传递?

  5. 5

    为什么port是字符串而不是整数?

  6. 6

    为什么打印字符指针会产生字符串而不是内存地址?

  7. 7

    为什么我在 C# 和 C++ 中得到一个整数而不是字符串?

  8. 8

    为什么字符串不是值?

  9. 9

    为什么在C ++中将字符串引用成员变量设置为空字符串?

  10. 10

    为什么可以将字符串指针初始化为字符串文字,而不是数组?

  11. 11

    为什么字符串文字不是字符串?

  12. 12

    为什么clang将字符串文字作为指针而不是数组?

  13. 13

    为什么此文件名参数是char指针而不是字符串?

  14. 14

    为什么在我的BST遍历中显示指针而不是字符串?

  15. 15

    C分割字符串函数在字符串末尾返回\ 377而不是\ 0。为什么?

  16. 16

    为什么Objective-C数组参数不使用冒号?

  17. 17

    为什么Objective-C异常不友好?

  18. 18

    为什么这个Objective-C ++程序不能编译?

  19. 19

    Objective-C为什么需要__NSGlobalBlock__

  20. 20

    为什么CGBitmapInfo删除了Objective-C中的kCGBitmapByteOrderDefault?

  21. 21

    Objective C故事板为什么ParentViewController为零

  22. 22

    为什么for循环中的迭代器是字符串而不是整数?

  23. 23

    为什么MVC 5使用字符串而不是整数作为用户的主键?

  24. 24

    为什么最好将电话号码存储为字符串而不是整数?

  25. 25

    为什么SUM(`column`)返回一个字符串而不是整数?

  26. 26

    为什么我的JavaScript程序没有将其转换为整数而不是字符串?

  27. 27

    为什么在C中打印字符而不在字符串时使用星号作为指针?

  28. 28

    在Go中使用指向字符串而不是字符串的指针有什么好处

  29. 29

    为什么不能重新分配字符串数组,但是字符串指针可以使用C语言?

热门标签

归档