@class和#import有什么区别?我遇到了一个情况,我得到了一个构建错误,解决方案是使用@class而不是#import来导入我的类。发布于 2010-11-13 23:48:37
@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;发布于 2010-11-14 00:03:19
Scott已经从字面上回答了您的问题,但是如果像Adam Ko所说的那样,您的意思是# import,那么答案将是@class不导入类,而只是告诉编译器,稍后将提供一个具有给定名称的类(我记得这个类称为“延迟绑定”)。
@类主要用于两个相互引用的类,因此它们不能同时导入(这可能是编译器错误的来源)。
但是,@class有一个明显的限制,编译器不允许您引用定义类的任何方法或属性。但是通常您只需要在实现.m文件中使用它们,并且可以在那里导入类,而不会出现任何问题。
发布于 2010-11-14 00:17:50
原子属性是确保getter返回有效、有意义的值的属性,即使相关的setter在另一个线程上同时被调用。这在处理术语上比非原子属性花费更多,但对于多线程代码来说更安全。
https://stackoverflow.com/questions/4175313
复制相似问题