加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 在@interface中声明ivar和在@implementation中放

发布时间:2020-12-16 04:57:19 所属栏目:百科 来源:网络整理
导读:在@interface中声明ivar与在.m文件中的@implementation中放置变量之间有什么区别? @interface MyClass : NSObject { int num;}- (void)doSomething;@end 与 @implementation MyClass int num2;- (void)doSomething { num = 137; num2 = 138;}@end 有没有时
在@interface中声明ivar与在.m文件中的@implementation中放置变量之间有什么区别?
@interface MyClass : NSObject {
  int num;
}
- (void)doSomething;
@end

@implementation MyClass   
int num2;

- (void)doSomething {
  num = 137;
  num2 = 138;
}
@end

有没有时间想要在@implementation中放置一个变量?

解决方法

使用ivar和在实现中声明变量之间的区别在于实现中的变量位于文件范围和全局.这意味着所有实例(和任何静态方法)将共享同一个变量;即如果您的对象的一个??实例更改了该变量,它将为所有实例更改它.

在文件范围定义它的用例是为静态方法存储内容(直接作用于类而不是类的实例的方法).一个真正常见的用例是Singleton设计模式.您可以在此文件中定义类的静态实例,以便您可以随时确保访问同一实例.您可以提供一个返回此实例的静态方法,以便代码中的任何对象都可以通过直接在您的类上调用该方法来访问该对象.

2014年4月17日更新

现在常见的做法是使用Properties.这会为你创建getter和setter,自动使类更具可扩展性(如果你决定改变一个属性的工作方式,也许你想把它改为总是可以动态计算,公共接口该课程不需要改变).

您可以使用private class extensions to declare “private” properties and methods.这可以保护某些属性和方法不被外部类访问.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读