objective-c - Objective-c 中的基本消息计数

标签 objective-c multithreading caching message objc-message-send

在下面的示例中,有多少消息被发送到 myObject

- (void) myMethod:(id) myObject
    NSLog(@"%@", myObject.myStringProperty);
    NSLog(@"%@", myObject.myStringProperty);
    NSLog(@"%@", myObject.myStringProperty);
}

我只是好奇 Objective-c 可能会在堆栈上缓存 myStringProperty 返回的值。 myStringProperty 返回的值可能会在连续消息之间发生变化,因此缓存可能没有意义。

最佳答案

三个

I'm just curious about Objective-c potentially caching the value returned by myStringProperty on the stack. The value returned by myStringProperty could change between successive messages so perhaps caching doesn't make sense.

不,它没有被缓存。发送每条 objc 消息,前提是 myObject 不是 nil

编译器不知道方法执行中的任何副作用 (1) 或全局状态的影响 (2)。

  1. 例如在执行获取 myStringProperty 的过程中,myObject 或它引用的任何内容是否会发生变化?
  2. 例如结果是否受当前时间影响?

关于objective-c - Objective-c 中的基本消息计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9012563/

相关文章:

iphone - View 更改后动画不会重新启动

iphone - iOS:检测主运行循环之外的低内存崩溃

objective-c - iOS - EXC_BAD_ACCESS 错误

java - Android:处理同步网络通话

http - HTTP header Vary :*是什么意思

database - MySQL 的替代品

iPhone -> 动态单元格高度

c++ - 在线程之间共享资源(文件,互斥体)

java - 使用主线程或单独线程在后台播放音频文件的正确方法/方法

asp.net-mvc - ASP.NET MVC 缓存因 Controller 操作参数而异