有什么用
@class
&#import
之间的区别?我有一个情况 我得到一个生成错误, 和解决方案是使用@class
而不是#import
导入我的 类。目标C - 2个简单的问题非原子是什么意思?我何时 使用非原子来定义属性, 什么时候我可以避免它?
0
A
回答
2
@class
允许您为稍后定义的类创建存根。例如:
MyOtherClass.h
@class MyClass;
@interface MyOtherClass : NSObject {
MyClass *myObject;
}
MyOtherClass.m
#include "MyOtherClass.h"
@interface MyClass : NSObject {
NSUInteger myInt;
}
#define
用于定义将被预处理器被替换的字符串。例如:
#define MY_INT 5
x = MY_INT;
将由预处理器被改写:
x = 5;
0
斯科特·G有已经回答了你的问题,从字面上看,但如果正如亚当柯说,你意味着#进口,答案是@class不会导入类,而只是告诉编译器,稍后有一个具有给定名称的类将被提供(在我所记得的所谓的“延迟绑定”中)。
@class主要用于当您有两个相互引用的类时,所以它们不能同时导入(这可能是编译器错误的来源)。
但是,@class有一个明确的限制,即编译器不允许您引用定义类的任何方法或属性。但是通常你只需要在一个实现的.m文件中使用它们,那么你可以在没有任何问题的情况下导入这个类。
0
原子属性是一个getter被保证返回一个有效的,有意义的值,即使在另一个线程上同时调用相关的setter。在处理方面比非原子性质成本更高,但对多线程代码更安全。
0
如果你使用原子(这是默认值),它会产生一些神奇的效果,使你的代码完全线程安全。
这个魔法花费了一些东西,这就是为什么你经常看到关键字非原子,如果人们不真正关心线程安全性以使代码更快,他们就会使用它。
相关问题
- 1. 目标C一个简单的问题,关于内存泄露
- 2. 一个简单的目标C xcode内存管理问题
- 3. 2简单的Java问题
- 4. 简单C问题
- 5. 目标C一个简单的人类
- 6. 简单的标签问题
- 7. 简单的C问题
- 8. 上的C叠IMPL一个简单的问题++标准库
- 9. 简单的C/C++的问题
- 10. C#NHibernate简单问题
- 11. C#简单IF或问题
- 12. C++链表简单问题
- 13. C++简单线程问题
- 14. 简单的目标C问题:我如何从其他类访问变量?
- 15. 2简单而快速的C#特定的Visual Studio问题?
- 16. 问题的目标C
- 17. sqlite3_prepare()的问题目标C
- 18. 简单TableView问题
- 19. 简单的项目符号点问题
- 20. 简单的C#的foreach对LINQ问题
- 21. Objective-C的简单的内存问题
- 22. iphone/Objective C的(简单)的问题
- 23. (简单)问题TweetSharp
- 24. 简单坐标转换的问题
- 25. 一个简单的getch()和strcmp问题
- 26. 简单Jeditable问题
- 27. 简单的组装问题
- 28. 目标C - 释放问题
- 29. FlowCover问题目标C
- 30. 目标C线程问题
我认为这是最好的做法,有单独的问题。至于第二个问题,请参阅:http://stackoverflow.com/questions/588866/objective-c-properties-atomic-vs-nonatomic – Chase 2010-11-13 23:38:20
我相信它是#import你说,而不是#define? – koo 2010-11-13 23:39:21