Aar*_*ron 2 iphone cocoa cocoa-touch objective-c
我有一个视图,谁的方法被视图控制器中的加速度计更新调用.我需要多个方法来使用和更改某些变量,例如,一个方法初始化变量,另一个方法用每个加速更新更新它们的值.
我知道如果他们只在一种方法上使用我可以在该方法中声明它们并且没问题.但是因为它们在多种方法中使用,所以我一直在实现文件的顶部声明它们,但不是我认为相信错误的静态.在Apple的一些示例代码中,他们总是在接口文件中声明这些代码.这样做的最佳方式是什么?为什么?
我目前的方法:
@implementation
int foo;
备选方案1:
@implementation
static int foo;
备选方案2:
@interface {
int foo;
谢谢,
如果仅对单个方法的单次运行需要变量,则在方法内声明它们.每次输入方法时都需要初始化它们.这是线程安全的.
如果仅在单个方法中需要变量,但是您希望它们在调用之间保持其值,请在方法中将它们声明为静态.它们被初始化为nil/0/false,或者您可以在声明中初始化它们.这不是线程安全的.
如果变量需要由单个实现文件中的任何方法或函数访问,并且您只需要一个用于整个程序,则将它们声明为.m文件中的静态变量.将它们声明为静态会阻止它们被链接器导出并与其他同名的全局变量冲突.它们默认初始化为nil/0/false,或者您可以在声明中初始化它们.这不是线程安全的.
如果变量需要通过对象中的任何方法访问,并且每个实例都需要自己的值,那么您需要一个ivar,在{}之间的接口中声明它.它们被初始化为nil/0/false.您无法在声明时将它们初始化为任何其他值.您可以在对象的init中初始化它们.如果仅从单个线程访问对象,则这是线程安全的.
| 归档时间: |
|
| 查看次数: |
2432 次 |
| 最近记录: |